Bawię się autoryzacją Oauth 2.0 na Facebooku i zastanawiałem się, czy tokeny dostępu, które Facebook traci, kiedykolwiek stracą ważność. Jeśli tak, czy istnieje sposób zażądania tokena dostępu o przedłużonej trwałości?
Bawię się autoryzacją Oauth 2.0 na Facebooku i zastanawiałem się, czy tokeny dostępu, które Facebook traci, kiedykolwiek stracą ważność. Jeśli tak, czy istnieje sposób zażądania tokena dostępu o przedłużonej trwałości?
Odpowiedzi:
Po pewnym czasie znalazłem to. Wydaje się, że to odpowiedź:
Zaktualizowano (11 kwietnia 2018 r.)
Ogłoszenie zmiany na Facebooku (10.04.2018)
Zaktualizowana strona wygaśnięcia tokena na Facebooku (10.04.2018)
offline_access: umożliwia aplikacji wykonywanie autoryzowanych żądań w imieniu użytkownika w dowolnym momencie. Domyślnie większość tokenów dostępu wygasa po krótkim czasie, aby aplikacje wysyłały żądania w imieniu użytkownika tylko wtedy, gdy aktywnie korzystają z aplikacji. To uprawnienie sprawia, że token dostępu zwracany przez nasz punkt końcowy OAuth jest długotrwały.
Wymagana jest wartość pozwolenia.
http://developers.facebook.com/docs/authentication/permissions
AKTUALIZACJA
Uprawnienie offline_access zostało usunięte jakiś czas temu.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Spróbuj tego, może to pomoże ci w pełni
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
Aby otrzymać dożywotni token dostępu, musisz użyć scope=offline_access
Znaczenie scope=offline_access
jest następujące:
Umożliwia aplikacji wykonywanie autoryzowanych żądań w imieniu użytkownika w dowolnym momencie. Domyślnie większość tokenów dostępu wygasa po krótkim czasie, aby aplikacje wysyłały żądania w imieniu użytkownika tylko wtedy, gdy aktywnie korzystają z aplikacji. To uprawnienie sprawia, że token dostępu zwracany przez nasz punkt końcowy OAuth jest długotrwały.
Ale zgodnie z przyszłą aktualizacją Facebooka, funkcjonalność offline_acees zostanie wycofana na zawsze od 3 października 2012 r., A użytkownik otrzyma 60-dniowy token dostępu, a przed wygaśnięciem tokena dostępu Facebook powiadomi lub możesz uzyskać niestandardowy funkcja powiadomień pobierająca wartość wygaśnięcia z interfejsu API Facebooka.
Zauważ, że Facebook wycofuje teraz uprawnienie offline_access na rzecz tokenów, dla których możesz poprosić o „aktualizację” do wygaśnięcia. Właśnie teraz sobie z tym radzę, więc nie mam nic więcej do powiedzenia, ale ten dokument może pomóc:
https://developers.facebook.com/docs/offline-access-deprecation/
Przyszedłem tutaj z tym samym pytaniem co OP, ale odpowiedzi sugerujące użycie offline_access budzą we mnie czerwone flagi.
Z punktu widzenia bezpieczeństwa uzyskanie dostępu offline do konta użytkownika na Facebooku jest jakościowo inne i znacznie bardziej wydajne niż zwykłe używanie Facebooka do pojedynczego logowania i nie powinno być używane lekko (chyba że naprawdę tego potrzebujesz). Gdy użytkownik przyzna to uprawnienie, „aplikacja” może sprawdzić konto użytkownika z dowolnego miejsca w dowolnym czasie. Umieściłem „aplikację” w cudzysłowie, ponieważ jest to właściwie dowolne narzędzie, które ma dane uwierzytelniające - możesz napisać skrypt całego zestawu narzędzi, które nie mają nic wspólnego z serwerem WWW, który ma dostęp do wszystkich informacji, które użytkownik zgodził się im udostępnić kwalifikacje.
Nie użyłbym tej funkcji do obejścia krótkiego okresu istnienia tokenu; to nie jest jego zamierzone przeznaczenie. Rzeczywiście, sam okres istnienia tokenu jest funkcją bezpieczeństwa. Nadal szukam szczegółów dotyczących prawidłowego użycia tych tokenów (czy mogę je utrwalić? Jak je / należy zabezpieczyć? Czy Facebook osadza „token odświeżania” OAuth 2.0 w głównym tokenie? Jeśli nie, to gdzie on jest i / lub jak odświeżyć?), ale jestem prawie pewien, że dostęp offline nie jest właściwy.
Tak, wygasają. Istnieje wartość „expires”, która jest przekazywana wraz z „access_token” iz tego, co wiem, to około 2 godzin. Szukałem, ale nie widzę sposobu, aby poprosić o dłuższy czas ważności.
ponieważ miałem ten sam problem - zobacz świetny post na ten temat od Bena Biddingtona, który wyjaśnił wszystkie te kwestie za pomocą niewłaściwego tokena i właściwego typu do wysłania do żądań.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Zawsze możesz odświeżyć token dostępu użytkownika za każdym razem, gdy loguje się on do Twojej witryny za pośrednictwem Facebooka. Dostęp w trybie offline nie może zagwarantować, że otrzymasz dożywotni token dostępu, token dostępu zmienia się, gdy użytkownik unieważnia dostęp do aplikacji lub użytkownik zmienia swoje hasło.
Cytat z Facebooka http://developers.facebook.com/docs/authentication/
Uwaga: jeśli aplikacja nie zażądała uprawnienia offline_access, token dostępu jest ograniczony czasowo. Token dostępu ograniczony czasowo również zostanie unieważniony, gdy użytkownik wyloguje się z Facebooka. Jeśli aplikacja uzyskała uprawnienie offline_access od użytkownika, token dostępu nie wygasa. Jednak zostaje ono unieważnione, gdy użytkownik zmieni swoje hasło.
Załóżmy, że przechowujesz identyfikator użytkownika Facebooka i token dostępu w tabeli użytkowników w swojej bazie danych, za każdym razem, gdy użytkownik kliknie przycisk „Zaloguj się z Facebookiem”, sprawdzasz status logowania za pomocą interfejsu API Facebook Javascript, a następnie sprawdzasz stan połączenia z odpowiedzi , jeśli użytkownik połączył się z Twoją witryną, możesz zaktualizować token dostępu w tabeli.
zaloguj się na konto na Facebooku i edytuj ustawienia aplikacji (konto -> ustawienia aplikacji -> dodatkowe uprawnienia aplikacji, która korzysta z Twojego konta). usuń zaznaczenie uprawnienia (Dostęp do moich danych, gdy nie używam aplikacji (dostęp offline)). Wtedy facebook zarezerwuje wystawienie nowego tokena po zalogowaniu się do aplikacji.
Podstawowy token Facebooka wygasa za około godzinę. Ale możesz użyć tokena `` exchange '', aby uzyskać token długowieczny https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
Sprawdź następujące rzeczy podczas interakcji z interfejsem graficznym Facebooka.
1) Adres URL połączenia aplikacji powinien być podstawą adresu URL połączenia „redirect_uri”: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Twój „redirect_uri” ”powinno być takie samo w obu przypadkach (gdy żądasz kodu weryfikacyjnego i żądania tokena_dostępu) redirect_uri - www.x-minds.org/fb/connect/redirect 3) powinieneś zakodować argument, gdy żądasz access_token 4) nie powinien przekazywać argumentu (type = client_cred), gdy żądasz access_token. serwer autoryzacyjny wyda token bez części sesyjnej. nie możemy użyć tego tokenu z aliasem „ja” w graficznym interfejsie API. Ten token będzie miał długość (40), ale token z częścią sesyjną będzie miał długość (81). W niektórych przypadkach zadziała token dostępu bez części sesyjnej
np .: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Ale Graph API z aliasem „ja” będzie działać tylko z tokenem z częścią sesyjną.
Nie wiem, kiedy dokładnie tokeny wygasają, ale tak się dzieje, w przeciwnym razie nie byłoby opcji nadania uprawnień offline.
W każdym razie czasami wymaganie od użytkownika udzielenia uprawnień offline to przesada. W zależności od Twoich potrzeb może wystarczy, że token będzie ważny tak długo, jak długo strona będzie otwarta w przeglądarce użytkownika. W tym celu może być prostsze rozwiązanie - okresowe ponowne logowanie użytkownika za pomocą ramki iframe: facebook automatyczne ponowne logowanie z pliku cookie php
Pracował dla mnie ...
Nastąpiło to kilka lat później, ale Facebook Graph API Explorer ma teraz mały symbol informacji obok tokenu dostępu, który umożliwia dostęp do aplikacji narzędzia tokenu dostępu i przedłużenie tokenu API na kilka miesięcy. Może być pomocny w rozwoju.