2010-01-19 12 views
10

sono in grado di aggiornare lo stato sul mio muro profilo utilizzando questo codice:Autorizzare un Fan Page di Facebook per aggiornamenti di stato

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'); 

... dopo che autorizza utilizzando questo indirizzo: http://facebook.com/authorize.php?api_key=MYAPPAPIKEY&v=1.0&ext_perm=publish_stream

Questo il codice, tuttavia, non funziona per aggiornare lo stato sulla mia bacheca di Facebook. Ci sono ulteriori parametri che posso aggiungere all'url authorize.php per specificare l'autorizzazione della PAGINA e non solo il mio profilo?

Oppure, ci sono modi migliori per pubblicare aggiornamenti su Fan Page Walls?

Grazie!

+0

Probabilmente devi prima autorizzare l'app per la tua pagina. È possibile controllare la risposta dalla query REST. Se risponde a te con un 401/403, l'app non è autorizzata ad aggiornare il profilo. – funwhilelost

risposta

21

Ho risolto il problema consultando lo Facebook desktop application documentation (anche se si tratta di un'applicazione Web).

primo luogo ho dovuto autorizzare l'accesso non in linea con questo URL (sostituendo '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

Poi, avevo bisogno di concedere 'publish_stream' autorizzazioni per la pagina con questo URL (sostituendo 'MYAPIKEY' e ' 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

ho potuto quindi utilizzare il seguente codice di pubblicare alla Fan Page parete:

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

Mio Dio, sei fantastico. Ho bruciato il cervello cercando di capire come concedere i permessi della pagina ... Sei il mio eroe –

+0

Ho provato a lavorare su questo ma ottengo l'errore FATAL (Errore irreversibile: chiamata a una funzione membro stream_publish() su un non-oggetto in ...). Ho dato autorizzazioni offline e publish_stream. Sto usando lo stesso codice. – noobcode

+0

Grande. Molto utile, grazie! Sono stato in grado di pubblicare sulla mia pagina. Sfortunatamente, sono l'unico in grado di vedere il mio post, che non è molto utile. Quando qualcun altro guarda il muro della pagina, il post che ho creato usando l'API non viene mostrato. Qualcuno ha questo problema? – Savageman

0

sulla base di quanto sopra, ho provato ou ta paio di parametri querystring sulle API grafico di autorizzare URL, e sembra che questo funziona:

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: Non importa, i display soprattutto l'interfaccia utente in modo corretto, ma ancora ottenere il "(# 200) Il l'utente non ha autorizzato l'applicazione per eseguire questa azione "errore --- è chiaro che non funziona perché il token di accesso contiene il mio ID UTENTE ma non l'ID della pagina.

Problemi correlati