Czy można rozszerzyć tokeny Facebooka za pomocą extendAccessTokenIfNeeded w aplikacji na Androida?

Myślę, że może to mieć wpływ na wielu programistów na Facebooku / Androidzie, a jednak nie wydaje się, aby dyskusja na ten temat była tak wielka ...

Moje pytanie

Czy ktoś pomyślnie odświeżył token za pomocą funkcji extendAccessTokenIfNeeded? Jeśli odniosłeś sukces, jaką wersję uruchomiło urządzenie (lub emulator)?

tło

Otrzymałem wiadomość e-mail z Facebooka, że ​​pozwolenie na dostęp offline_access będzie przestarzałe od 1 maja 2012 r., A Facebook zalecił uaktualnienie do najnowszego SDK. W porządku.

Zaktualizowałem do najnowszego SDK, oficjalna aplikacja Facebook jest zainstalowana na moim urządzeniu i (w końcu!) Single Sign On wydaje się działać OK. Otrzymuję 60 żetonów dni, które znowu są OK.

Problemy zaczęły się, gdy próbowałem użyć extendAccessTokenIfNeeded (kontekst kontekstowy, ServiceListener serviceListener). Nie udało mi się go odświeżyć, aby uzyskać dłuższy czas ważności. Odczekałem 24 godziny między próbami, ale token nie odświeżył się. Jedynym sposobem uzyskania odświeżonego tokena jest wylogowanie się i zalogowanie. Stało się tak również, gdy użyłem przykładowego projektu „Hackbook”.

Najbardziej oczywistą odpowiedzią jest to, że robię coś złego, aleZgłoszenie błędu został wysłany do Facebooka mówiącego, że ... "shouldExtendAccessToken praktycznie zawsze zwraca false." Ten raport otrzymał priorytetową „listę życzeń”.

Alternatywy dla extendAccessTokenAsNeeded ()

wDokumentacja na Facebooku o przestarzałym dostępie offline tokeny można rozszerzać za pomocą API Graph. Jednak ma towada konieczności „App Secret” w adresie URL. Zaletą jest to, że użytkownik nie musi mieć zainstalowanej oficjalnej aplikacji Facebook na swoim urządzeniu.

Inne pomysły i obawy

Zmieniając funkcję extendAccessTokenIfNeeded w Facebook.java, aby zawsze zwracała wartość true, myślę, że odświeżyłem ją raz. (Powodem, dla którego mówię „pomyśl” jest to, że nie powtórzy tego zachowania i podejrzewam, że muszę poczekać kolejne 24 godziny przed jakąkolwiek szansą na kolejny sukces)

Zauważam, że Hackbook wymagaAndroidHttpClient do zaimportowania. Jest to dostępne tylko dla API 8 i późniejszych. Czy to oznacza, że ​​usługa SSO Facebook (w szczególności odświeżanie tokenu) może działać tylko na urządzeniach z interfejsem API 8 i nowszym?

TheFacebook.apk zawarty w SDK jest dość stary. Być może dlatego tokeny nie odświeżają się na emulatorach z interfejsem API 8 i nowszym?

I wreszcie, wszystko to dotyczy tylko tych osób, które mają zainstalowaną oficjalną aplikację na Facebooku! Dla osób bez oficjalnej aplikacji na Facebooku należy uzupełnić inną metodę (teraz narzekam!)

Odpowiednie linki na Facebooku

Facebook-Android-SDK w GitHub

Samouczek Facebooka na Androida

Nieaktualne zezwolenie na dostęp offline do Facebooka

Raport o błędzie Facebooka

Podobne pytania dotyczące przepełnienia stosu

60-dniowy token dostępu do Facebooka i przestarzały Offline_Access

Token dostępu do Facebooka nie może zostać przedłużony

Jak działałby dostęp offline po wycofaniu po 1 maja?

Token dostępu do Facebooka nie może zostać przedłużony

Ochrona tajemnicy aplikacji przed użyciem extendAccessToken (Java / Android)

questionAnswers(2)

yourAnswerToTheQuestion