私はこれは、AndroidのFacebook /多くの開発者に影響を与える可能性があり、まだ話題にその多くの議論があるようには思えない...AndroidアプリケーションでextendAccessTokenIfNeededを使用してFacebookトークンを拡張することはできますか?
私の質問
は誰もが正常にリフレッシュされていると思いますextendAccessTokenIfNeeded関数を使用するトークン?あなたが成功した場合、デバイス(またはエミュレータ)はどのバージョンで動作していましたか?
背景
私はoffline_access許可は5月1日2012から廃止され、Facebookはその最新のSDKへのアップグレードを推奨言うのFacebookからのメールを受け取りました。ファイン。
最新のSDKにアップグレードすると、公式のFacebookアプリが自分のデバイスにインストールされ、(結局のところ!)シングルサインオンが正常に機能しているようです。私は再びOKである60日間のトークンを受け取っています。
extendAccessTokenIfNeeded(コンテキストコンテキスト、ServiceListener serviceListener)を使用しようとしたときに問題が発生しました。私はそれがより長い有効期限のために私のトークンを更新することができませんでした。私は試行の間に24時間待っていましたが、トークンは更新されませんでした。リフレッシュされたトークンを取得できる唯一の方法は、ログアウトしてログインすることです。これは私がサンプルプロジェクト "Hackbook"を使用したときにも起こりました。
最も明白な答えは私が間違ったことをしていることですが、bug reportはFacebookに提出されました。「shouldExtendAccessTokenはほとんど常にfalseを返します。この報告書には、優先事項「ウィッシュリスト」が与えられています。 Facebook documentation about offline_access deprecationトークンで
extendAccessTokenAsNeededの代替()
は、グラフAPIを使用して拡張することができます。ただし、URLにはdisadvantage of needing the "App Secret"が含まれています。利点は、ユーザーがデバイスに公式Facebookアプリをインストールする必要がないことです。
その他のアイデアや懸念
常にtrueを返すようにFacebook.javaにextendAccessTokenIfNeeded機能を変更することにより、私はそれが一度リフレッシュするようになったと思います。 (私はそれが動作を繰り返すことはしませんし、私は別の成功のチャンスの前に別の24時間を待たなければならない疑いがあるためである「と考える」と言う理由)
私はHackbookが をインポートするAndroidHttpClientが必要であることに気づきます。これは、API 8以降でのみ使用できます。これは、Facebook SSO(特にトークンリフレッシュ)がAPI 8以降のデバイスでのみ動作する可能性が高いことを意味する を意味しますか?
Facebook.apk included in the SDKはかなり古いです。 API 8以降を実行しているエミュレータでトークンが更新されないのはなぜですか?
最後に、これは の公式Facebookアプリがインストールされているユーザーのみに関連しています。もう一つの方法は、公式のFacebookアプリなしでそれらの人々のために完了する必要があります(ちょうど今不平を言う!)
関連Facebookは
Facebook-Android-SDK at GitHub
Facebook offline_access permission deprecation
リンク関連スタックオーバーフローに関する質問
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)
"Facebook.javaのextendAccessTokenIfNeeded関数を常にtrueに変更することで、一度リフレッシュすることができたと思います(「考える」と言う理由は、動作を繰り返さないためです)別の成功のチャンスの24時間前にもう一度待ってください) "あなたは再テストしましたか? – nmr