2010-01-19 5 views
10

Je suis en mesure de mettre à jour le statut sur mon mur PROFILE en utilisant ce code:Autorisant Fan Page Facebook pour les mises à jour Statut

require_once 'facebook-platform/php/facebook.php'; 
$facebook = new Facebook('APP API KEY','APP SECRET KEY'); 
$user_id = 'MY USER ID'; 
$facebook->api_client->users_setStatus('This is a new status'); 

... après l'autorisation à cette adresse: http://facebook.com/authorize.php?api_key=MYAPPAPIKEY&v=1.0&ext_perm=publish_stream

Cette code, cependant, ne fonctionne pas pour mettre à jour le statut sur mon mur Facebook PAGE. Y a-t-il des paramètres supplémentaires que je peux ajouter à l'URL authorize.php pour spécifier l'autorisation de la PAGE et pas seulement mon profil?

Ou, y a-t-il de meilleurs moyens de publier des mises à jour sur les murs des pages de fans?

Merci!

+0

Vous devez d'abord autoriser l'application pour votre page. Vous pouvez vérifier la réponse de la requête REST. S'il vous répond avec un 401/403, l'application n'est pas autorisée à mettre à jour le profil. – funwhilelost

Répondre

21

J'ai résolu le problème en consultant le Facebook desktop application documentation (même s'il s'agit d'une application Web).

je devais d'abord autoriser l'accès hors ligne avec cette url (remplaçant « MYAPIKEY »): http://www.facebook.com/login.php?api_key=MYAPIKEY&connect_display=popup&v=1.0&next=http://www.facebook.com/connect/login_success.html&cancel_url=http://www.facebook.com/connect/login_failure.html&fbconnect=true&return_session=true&session_key_only=true&req_perms=read_stream,publish_stream,offline_access

Ensuite, il me fallait accorder « publish_stream » autorisations à la page avec cette url (remplaçant « MYAPIKEY » et ' THEPAGEID '): http://www.facebook.com/connect/prompt_permissions.php?api_key=MYAPIKEY&v=1.0&next=http://www.facebook.com/connect/login_success.html?xxRESULTTOKENxx&display=popup&ext_perm=publish_stream&enable_profile_selector=1&profile_selector_ids=THEPAGEID

Je pourrais alors utiliser le code suivant pour publier sur le mur Fan page:

require_once 'facebook-platform/php/facebook.php'; 
$facebook = new Facebook(MYAPIKEY, MYAPISECRET); 
try{ 
    $facebook->api_client->stream_publish('INSERT_STATUS_HERE',null,null,null,'THEPAGEID'); 
}catch(Exception $o){ 
    print_r($o); 
} 
+2

Mon dieu, vous êtes génial. J'ai brûlé mon cerveau en essayant de comprendre comment accorder les autorisations de la page ... Vous êtes mon héros –

+0

J'ai essayé de travailler sur cela, mais je reçois erreur FATAL (Erreur fatale: Appel à une fonction membre stream_publish() sur un non-objet dans ...). J'ai donné l'autorisation hors connexion et les autorisations publish_stream. J'utilise le même code. – noobcode

+0

Génial. Très utile, merci! J'ai été capable de poster sur le mur de ma page. Malheureusement, je suis le seul à pouvoir voir mon message, ce qui n'est pas vraiment utile. Quand quelqu'un d'autre regarde le mur de la page, le message que j'ai fait en utilisant l'API ne s'affiche pas. Quelqu'un at-il ce problème? – Savageman

0

sur la base de ce qui précède, j'ai essayé OU ta couple de paramètres querystring sur l'API graphique autorise l'URL, et il semble que cela fonctionne:

https://graph.facebook.com/oauth/authorize?client_id=[APP_ID]&redirect_uri=[REDIRECT_URL]&scope=publish_stream&enable_profile_selector=1&profile_selector_ids=[PAGE_IDS]

EDIT: Peu importe, les affichages surtout l'interface utilisateur correctement, mais toujours obtenir le « (# 200) Le l'utilisateur n'a pas autorisé l'application à effectuer cette action "erreur --- il est clair que cela ne fonctionne pas parce que le jeton d'accès contient mon identifiant utilisateur, mais pas l'ID de la page.

Questions connexes