myślę, że to może wpływać wiele facebook/programistów Androida i jeszcze tam nie wydaje się być to, że wiele dyskusji na temat ...Czy można rozszerzyć tokeny Facebooka za pomocą extendAccessTokenIfNeeded w aplikacji na Androida?
Moje pytanie
Czy ktoś z powodzeniem odświeżony token za pomocą funkcji extendAccessTokenIfNeeded? Jeśli odniosłeś sukces, w jakiej wersji działa urządzenie (lub emulator)?
Tło
otrzymałem e-mail z Facebook mówiąc uprawnienie offline_access zostanie wycofany z dniem 1 maja 2012 roku i Facebook zaleca uaktualnienie do ich najnowszej SDK. W porządku.
Zaktualizowałem do najnowszego SDK, oficjalna aplikacja Facebook jest zainstalowana na moim urządzeniu i (ewentualnie!) Wydaje się, że funkcja Single Sign On działa prawidłowo. Otrzymuję 60-dniowe tokeny, które znów są w porządku.
Problemy rozpoczęły się, gdy próbowałem użyć extendAccessTokenIfNeeded (Kontekst kontekstu, ServiceListener serviceListener). Nie mogłem zmusić go do odświeżenia moich żetonów na dłuższy czas wygaśnięcia. Czekałem 24 godziny między kolejnymi próbami, ale token nie był odświeżany. Jedynym sposobem, w jaki mogę uzyskać odświeżony token, 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ś nie tak, ale bug report zostało przesłane do Facebooka, mówiąc, że ... "shouldExtendAccessToken praktycznie prawie zawsze zwróci false". Ten raport otrzymał priorytet "listy życzeń".
Alternatywy dla extendAccessTokenAsNeeded()
w The Facebook documentation about offline_access deprecation znaczników może być przedłużony za pomocą Graph API. Jednak w adresie URL znajduje się kod disadvantage of needing the "App Secret". Zaletą jest to, że użytkownik nie musi mieć zainstalowanej oficjalnej aplikacji Facebooka na swoim urządzeniu.
Inne pomysły i obawy
Zmieniając funkcję extendAccessTokenIfNeeded w Facebook.java zawsze zwracają prawdę, myślę, że mam go odświeżyć raz. (Dlatego mówię „myśleć” to dlatego, że nie powtórzy zachowanie i podejrzewam, że muszę czekać kolejne 24 godziny przed przypadkiem innego sukcesu)
Zauważyłem, że Hackbook wymaga AndroidHttpClient być importowane. Ta funkcja jest dostępna tylko dla API 8 i nowszych. Czy to oznacza, że Facebook SSO (w szczególności odświeżenie tokena) działa tylko na urządzeniach z API 8 i nowszym?
The Facebook.apk included in the SDK jest dość stary. Być może dlatego tokeny nie odświeżają się na emulatorach z API 8 i nowszym?
I na koniec wszystko to dotyczy tylko tych osób, które mają zainstalowaną oficjalną aplikację Facebooka ! Trzeba ukończyć inną metodę dla tych osób, które nie mają oficjalnej aplikacji na Facebooku (narzekaj teraz!)
Stosowna Facebook linki
Facebook-Android-SDK at GitHub
Facebook offline_access permission deprecation
związane z przepełnieniem stosu pytania
Facebook 60 day access token and Deprecated Offline_Access
Facebook access token can not be extended
How would offline_access work after deprecation after May 1st?
Facebook access token can not be extended
Protecting app secret for extendAccessToken usage (Java/Android)
"Zmieniając funkcję extendAccessTokenIfNeeded w Facebook.java, aby zawsze zwracać wartość true, myślę, że udało mi się ją odświeżyć raz. (Powodem, dla którego mówię" myślę ", jest to, że nie powtórzy to zachowanie i podejrzewam, że muszę poczekaj kolejne 24 godziny, zanim pojawi się szansa na kolejny sukces) "Czy powtórzyłeś test? – nmr