13

これは多くのFacebook/Android開発者に影響を与える可能性があると思いますが、それでもこのトピックについてはそれほど多くの議論がないようです...

私の質問

extendAccessTokenIfNeeded関数を使用してトークンを正常に更新した人はいますか?成功した場合、デバイス(またはエミュレーター)はどのバージョンで実行されていましたか?

バックグラウンド

Facebookからoffline_access権限が2012年5月1日から廃止されるというメールを受け取り、Facebookは最新のSDKへのアップグレードを推奨しました。罰金。

最新のSDKにアップグレードし、公式のFacebookアプリがデバイスにインストールされ、(最終的には!)シングルサインオンは正常に機能しているようです。60日間のトークンを受け取っていますが、これも問題ありません。

extendAccessTokenIfNeeded(Context context、ServiceListener serviceListener)を使用しようとすると、問題が発生しました。有効期限を長くするためにトークンを更新することができませんでした。試行の合間に24時間待ちましたが、トークンが更新されませんでした。更新されたトークンを取得する唯一の方法は、ログアウトしてログインすることです。これは、サンプルプロジェクト「Hackbook」を使用したときにも発生しました。

最も明白な答えは、私が何か間違ったことをしているということですが、バグレポートがFacebookに送信され、「shouldExtendAccessTokenはほとんどの場合falseを返します」と述べています。このレポートには、優先度の高い「ウィッシュリスト」が与えられています。

extendAccessTokenAsNeeded()の代替

Facebookのドキュメントでは、 offline_accessの非推奨トークンについて、GraphAPIを使用して拡張できます。ただし、これには「アプリシークレット」をURLに含める必要があるという欠点があります。利点は、ユーザーが公式のFacebookアプリをデバイスにインストールする必要がないことです。

その他のアイデアと懸念

  • Facebook.javaのextendAccessTokenIfNeeded関数を常にtrueを返すように変更することで、一度更新したと思います。(私が「考える」と言う理由は、それが行動を繰り返さないためであり、次の成功のチャンスが来るまでさらに24時間待たなければならないと思うからです)

  • HackbookではAndroidHttpClientをインポートする必要があることに気付きました。これは、API8以降でのみ使用できます。これは、Facebook SSO(特にトークンの更新)がAPI 8以降を搭載したデバイスでのみ機能する可能性が高いことを意味しますか?

  • SDKに含まれているFacebook.apkはかなり古いものです。おそらくこれが、API8以降を実行しているエミュレーターでトークンが更新されない理由ですか?

  • そして最後に、これはすべて、公式のFacebookアプリをインストールしている人々にのみ関係します!公式のFacebookアプリがない人のために別の方法を完了する必要があります(今すぐ文句を言うだけです!)

関連するFacebookリンク

Facebook-Android-GitHubのSDK

FacebookAndroidチュートリアル

Facebookoffline_access権限の廃止

Facebookのバグレポート

関連するスタックオーバーフローの質問

Facebookの60日間のアクセストークンと非推奨のOffline_Access

Facebookアクセストークンを拡張することはできません

5月1日以降の非推奨後、offline_accessはどのように機能しますか?

Facebookアクセストークンを拡張することはできません

extendAccessTokenの使用のためにアプリシークレットを保護する(Java / Android)

4

2 に答える 2

3

Androidの開発についてはわかりませんが、その機能に問題がある場合は、おそらくAndroid内にCURLの同様の機能があり、呼び出すことができます https://graph.facebook.com/oauth/access_token?
client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN

(Google が明らかにした: http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html Android から CURL を使用する方法について)

于 2012-04-09T22:52:22.060 に答える
1

REFRESH_TOKEN_BARRIERテストするたびに 24 時間待つ必要がないように、の時間を変更してみてください。2分程度に変更し、2分後にアプリを再起動すると、実際にアクセストークンが延長されていることがわかりました。

于 2012-06-12T17:24:08.610 に答える