2010-01-19 17 views
10

jestem w stanie aktualizować status na moim profilu ścianie za pomocą tego kodu:Nadanie Facebook Fan Page na aktualizacje statusu

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

... po zezwalająca użyciu tego adresu: http://facebook.com/authorize.php?api_key=MYAPPAPIKEY&v=1.0&ext_perm=publish_stream

ten Kod nie działa jednak w celu aktualizacji statusu na mojej ścianie na Facebooku. Czy są dodatkowe parametry, które mogę dodać do adresu URL authorize.php, aby określić autoryzację strony, a nie tylko mój profil?

A może istnieją lepsze sposoby publikowania aktualizacji dotyczących ścian strony wentylatora?

Dzięki!

+0

Najprawdopodobniej musisz najpierw autoryzować aplikację dla swojej strony. Możesz sprawdzić odpowiedź z zapytania REST. Jeśli odpowie na ciebie 401/403, aplikacja nie ma uprawnień do aktualizacji profilu. – funwhilelost

Odpowiedz

21

Rozwiązałem problem, kontaktując się z Facebook desktop application documentation (mimo że jest to aplikacja internetowa).

raz pierwszy musiał autoryzować dostęp w trybie offline z tym adresem (zastępując „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

Następnie musiałem przyznać „publish_stream” uprawnienia do strony z tym adresem (zastępując „MYAPIKEY” i ' 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

mogłem wtedy użyć następującego kodu do publikowania do ściany 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

Mój Boże, jesteś niesamowity. Płonę mój mózg próbując dowiedzieć się, jak przyznać uprawnienia do strony ... Jesteś moim bohaterem –

+0

Próbowałem pracować nad tym, ale dostaję błąd FATAL (Błąd krytyczny: wywołanie funkcji członka stream_publish() na nie-obiekt w ...). Dałem uprawnienia w trybie offline i zezwolenia publish_stream. Używam tego samego kodu. – noobcode

+0

Świetnie. Bardzo pomocne, dzięki! Udało mi się opublikować na mojej ścianie strony. Niestety, jestem jedyną osobą, która może zobaczyć mój post, co nie jest zbyt przydatne. Gdy ktoś inny spojrzy na ścianę strony, wpis, który zrobiłem przy użyciu interfejsu API, nie jest wyświetlany. Ktoś ma ten problem? – Savageman

0

w oparciu o powyższe, próbowałem ou ta para parametrów kwerendy na Graph API autoryzacji URL, a wydaje się to działa:

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: Nieważne, powyższe wyświetla wszystkie UI poprawnie, ale nadal uzyskać „(# 200) użytkownik nie autoryzował aplikacji do wykonania tego działania "błąd --- jest oczywiste, że nie działa, ponieważ token dostępu zawiera mój identyfikator USER, ale nie identyfikator strony.