2010-10-11 16 views
8

Potrzebuję synchronizacji zdarzeń z mojego CMSa do strony na Facebooku. Próbuję utworzyć wydarzenie dla mojej utworzonej strony, ale nadal nie mam wyniku. Mogę po prostu tworzyć zdarzenia powiązane z użytkownikiem, ale nie strony. Kod używa Facebook PHP-SDK.Tworzenie zdarzenia Facebook dla określonej strony za pomocą FB Graph API

$page_id = '31337'; 
$page = $facebook->api("/{$page_id}"); 
$event_data = array(
    'name'   => 'Event: ' . date("H:m:s"), 
    'start_time' => time() + 60*60, 
    'end_time'  => time() + 60*60*2, 
    'owner'   => $page 
); 
$post = $facebook->api("/{$page_id}/events", 'POST', $event_data); 

Po wykonaniu tego fragmentu, zdarzeń jest tworzona, ale jak już mówiłem, że należy do użytkownika, chociaż „właściciel” w danym danych jest strona. Moja aplikacja ma uprawnienia manage_pages, create_event i publish_stream. Czego mi brakuje?

Rozwiązanie

Na "OLD REST API" dokumentacji i ustaliliśmy, że "nowy Graph API" nadal potrzebuje parametru page_id. Tak zmienna $ event_data powinno być jak poniżej:

$event_data = array(
    'name'   => 'Event: ' . date("H:m:s"), 
    'start_time' => time() + 60*60, 
    'end_time'  => time() + 60*60*2, 
    'page_id'  => $page['id] 
); 
+0

Dzięki kolego! Właśnie mi pomogłeś! :) –

Odpowiedz

3

«Tworzy wydarzenie w imieniu użytkownika, jeżeli zgłoszenie jest aktywny klucz sesji dla tego użytkownika; w przeciwnym razie tworzy wydarzenie w imieniu aplikacji. "- Source

Czy to odpowiada na twoje pytanie?

+0

Thx za odpowiedź, ale w rzeczywistości nie. Gdy użytkownik nie jest zalogowany, wydarzenie jest tworzone na stronie aplikacji. Ale nie na konkretnej stronie, której mam identyfikator. – Pawka

+4

Ale w twoim linku znalazłem rozwiązanie: "Argument page_id może być użyty do generowania zdarzeń dla grup i stron.". Dziwne, że w dokumentacji "nowego API wykresu" brakuje informacji o parametrze page_id opisanym w "Old REST API". – Pawka

+1

Świetne wtedy :) Dokumentacja Facebooka jest daleki od przyzwoitości, jak zapewne już wiesz ... –

0

Interesujące - moje doświadczenie jest dokładnie odwrotne. Próbowałem utworzyć zdarzenie z parametrem page_id i otrzymałem błąd uprawnień. Usunięto identyfikator page_id i działało dobrze. Sztuką było użycie tokenu dostępu do aplikacji, a nie użytkownika.

+0

Musisz ustawić listę uprawnień do swojej aplikacji. http://developers.facebook.com/docs/authentication/permissions Uprawnienie "manage_pages" jest w rzeczywistości tym, czego potrzebujesz. – Pawka

+0

Nie jako takie - moje strony są tworzone przez moją aplikację, a nie przez użytkownika, więc nie ma w tym przypadku zgody na stronę manage_pages. Z jakiegoś powodu określenie page_id spowodowało niepowodzenie wywołania API, usunięcie go sprawiło, że działało poprawnie. – Alastair

1

Musisz przekazać token dostępu do strony zarządzanej, którą możesz pobrać ze strony graph.facebook.com/me/account (oczywiście przekazując token dostępu, aby uzyskać listę stron fanowskich, którymi zarządzasz). Zobaczysz tam listę żetonów dostępu dla każdej z twoich stron fanowskich, wykorzystaj je do stworzenia wydarzeń lub zamieścić na swojej stronie fanpage.

0

Ustaw atrybut access_token na stronę przed wykonaniem postu. Upewnij się, że aplikacja ma uprawnienia "manage_pages", aby to zadziałało.

Jak to:

$page = $fbApi->api('/'.<page_id>,'GET',array('fields'=> 'access_token')); 
$fbApi->setAccessToken($page['access_token']); 
Powiązane problemy