2012-09-10 17 views
5

Ponieważ Facebook usuwa uprawnienia offline_access, chcę przeprowadzić migrację naszej witryny, aby móc korzystać z nowego systemu.Jak uzyskać długoterminowe tokeny dostępu z interfejsu API Facebooka API (uwierzytelnianie po stronie serwera)?

znalazłem ten dokument na stronie Facebooka: https://developers.facebook.com/roadmap/offline-access-removal

Jednak, kiedy przetwarzać kogoś z uwierzytelniania po stronie serwera, mam tej odpowiedzi:

access_token => BLAHBLAHBLAHdontusemytokensilly 
expires => 4992 

Podczas próby i użyć punktu Acces (na tym dokumencie) rozszerzyć dostęp żeton więcej niż kilka godzin, otrzymuję ten powrotem:

access_token => BLAHBLAHBLAHdontusemytokensilly 
expires => 4990 

Według ten dokument, OAuth po stronie serwera powinien otrzymać token, który trwa 60 dni, nie rozumiem, dlaczego nie otrzymuję tego z powrotem.

Naprawdę nie chcę wysyłać naszych użytkowników przez przekierowanie OAuth co 2 godziny.

Wszelkie pomysły? dzięki!

UPDATE

Zgodnie z wnioskiem, o to, że przepływ Biorę (w przeglądarce):

Najpierw przekierowany użytkownik tutaj:

https://www.facebook.com/dialog/oauth?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&scope=user_about_me%2Cuser_events%2Cuser_interests%2Cuser_likes%2Cfriends_likes%2Cuser_location%2Cuser_status%2Cuser_subscriptions%2Cfriends_subscriptions%2Cemail%2Ccreate_event%2Cpublish_stream%2Crsvp_event%2Cpublish_actions%2Cuser_actions.music%2Cfriends_actions.music%2Cuser_actions.news%2Cfriends_actions.news%2Cuser_actions.video%2Cfriends_actions.video%2Cmanage_pages

ten przekierowuje użytkownika do:

http://localhost/user-social/facebook/redirect?code=BLAHBLAHBLAHsomeawesomecode#_=_ 

Potem zwróciła się o dostęp do tokenu tak:

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&code=BLAHBLAHBLAHsomeawesomecode

otrzymam ten odpoczynek od Facebooku:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=4057 

To obviosly krótkotrwały żeton. Zgodnie z dokumentacją na Facebooku (powyżej) powinienem otrzymać długo trwający token (ponieważ używam OAuth po stronie serwera).

Jednakże, ponieważ jest krótkotrwały, próbowałem go handlować na długotrwałymi Token:

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&grant_type=fb_exchange_token&fb_exchange_token=BLAHBLAHBLAHdontusemytokensilly

To właśnie wrócił Facebook:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=3967 

To samo access_token jest zwracana w obu wnioskach.

UPDATE 2

kładę powyższy token dostępu do Facebook Debugger i to właśnie powrócił:

App ID: 
BLAHBLAH 
User ID:  
211800900 : David Barratt 
Issued: 
Unknown 
Expires:  
1347303600 (in 40 minutes) 
Valid: True 
Origin: Web 
Scopes: create_event create_note email friends_actions.music friends_actions.news friends_actions.video friends_likes friends_subscriptions manage_pages photo_upload publish_actions publish_stream rsvp_event share_item status_update user_about_me user_actions.music user_actions.news user_actions.video user_events user_interests user_likes user_location user_status user_subscriptions video_upload 

UPDATE 3

Po usunięciu wszystkich moich uprawnień i ponownie autoryzować aplikację (zgodnie z sugestią @phwd). Facebook API zwraca to:

access_token=BLAHBLAHBLAHdontusemytokensilly 

Czy to oznacza, że ​​zwrócono mi długotrwały kod dostępu? jeśli tak, gdzie jest data wygaśnięcia?

UPDATE 4

Kiedy uruchomić powyższą access_token przez Facebooka Debugger, otrzymuję następujący wynik:

App ID: 
BLAHBLAH 
User ID:  
211800900 : David Barratt 
Issued: 
1347309538 (39 minutes ago) 
Expires:  
Never 
Valid: True 
Origin: Web 
Scopes: create_event create_note email friends_actions.music friends_actions.news friends_actions.video friends_likes friends_subscriptions manage_pages photo_upload publish_actions publish_stream rsvp_event share_item status_update user_about_me user_actions.music user_actions.news user_actions.video user_events user_interests user_likes user_location user_status user_subscriptions video_upload 

Wydaje się to naprawić pierwotnego problemu, ale to dziwne, że access_tokens są nieokreślone, zamiast trwać przepisane 60 dni.

Jakieś pomysły, dlaczego tak się dzieje?

Odpowiedz

2

Nie wiem, czy wiesz. Ale token dostępu będzie odnawiany tylko raz dziennie, bez względu na to, ile razy użytkownik zaloguje się do aplikacji.

Patrz: https://developers.facebook.com/roadmap/offline-access-removal/

+2

to nie ma znaczenia, jak długo -żywy token dostępu powinien trwać 60 dni (napisane przeze mnie pytanie mówi, że trwa to tylko kilka godzin). –

1

Ponieważ Facebook jest usunięcie zgody offline_access, chcę iść do przodu migrować naszą stronę internetową do korzystania z nowego systemu.

Upewnij się, że włączone „Usuń offline_access zgody” w zaawansowanych ustawieniach aplikacji

Advanced settings

Jeśli tak, może być uderzenie błąd https://developers.facebook.com/bugs/378106708911903

+0

Mogę potwierdzić, że "Usuń uprawnienia dostępu offline" jest ustawione na "Włączone". –

+0

To także nie jest aplikacja do wyświetlania na płótnie, to jest strona internetowa, więc nie jestem pewien, czy błąd dotyczy. –

+0

@DavidBarratt Czy cofnąłeś uprawnienia za pomocą 'HTTP DELETE/me/permissions' i ponów próbę, to nie musi być ograniczone tylko do aplikacji canvas. – phwd

Powiązane problemy