2

私は、しばらくの間 FB 認証とアクセス トークンを使用しており、offline_access の非推奨に対処するためにサイトを微調整しています。特に、fb_exchange_token を実行して、サイトのユーザーの期間延長トークンを取得しています。うまくいっているようですが、いくつか質問があります。私の基本的なアプローチは次のとおりです。

  • 通常のサーバー側の往復手順を使用してユーザーをログインさせ、最終的にユーザーの有効なアクセス トークンを取得します。これは正常に機能し、標準/元のトークンのように 5300 秒ほど有効であるように見えます。

  • 次に、すぐに fb_exchange_token 呼び出しを行います。これは成功し、数か月間有効な新しい access_token が得られます。これは、私のサイトがユーザーに代わって何かを行うときに将来使用するために保存するトークンです。

これは理にかなっていますよね?次々と呼び出しを行うのは少し冗長に思えますが、これにより、私が必要としている拡張寿命トークンが得られます。元のトークンが存続する限り使用でき、元のトークンの有効期限が切れるまで交換に煩わされることはないと思いますが、(a) 最初から拡張されたトークンを取得して使用する方がよいように思われ、(b)期限切れのトークンを延長期間のトークンと交換できるかどうかはわかりません。

だから:このアプローチに問題があると思う人はいますか?ありがとう!

4

5 に答える 5

2

a) はい、そのアプローチはうまくいきます。私はいくつかのアプリでそれを行います。

b) この FAQ の 3 番目の項目を参照してください。 http://dominicminicoopers.blogspot.com/2012/03/facebook-access-tokens-and-offline.html

60 日アクセス トークンを新しい 60 日アクセス トークンに交換できますか?

いいえ、できません。有効な (現在の) ユーザー アクセス トークンのみを拡張トークンと交換できます。すでに拡張されているアクセス トークンを拡張することはできません。

于 2012-04-05T23:51:27.567 に答える
1

なぜこのようなことをしないのですか(これらすべての爆発を行うよりもはるかにクリーンです)?

$response = $this->facebook->api('/oauth/access_token', 'GET', array(
    'grant_type' => 'fb_exchange_token',
    'client_id' => $app_id,
    'client_secret' => $app_secret,
    'fb_exchange_token' => $access_token
));
parse_str($response, $output_array);
$long_lived_access_token = $output_array['access_token'];
$expires = $output_array['expires'];
于 2012-06-12T17:12:51.423 に答える
1

今日、トークンを実際に拡張するには、アプリケーション設定内で offline_token を無効にする必要があることに気付きました。この設定を有効にしたまま一日中試してみましたが、無効にした瞬間に標準の2時間トークンしか取得できず、再試行しました(FBで再認証した後)2か月のトークンが与えられました. これが人々の時間を節約することを願っています (ドキュメントはまったく明確ではありません)。

于 2012-04-16T22:54:26.743 に答える
0
$url = "https://graph.facebook.com/oauth/access_token?client_id=$client_id&client_secret=$client_secret&grant_type=fb_exchange_token&fb_exchange_token=$fb_access_token";
$graph = file_get_contents($url);
$graph = explode("=", $graph);
$graph = explode("&", $graph[1]);
$new_access_token = $graph[0];
于 2012-04-19T15:00:31.383 に答える
0

これは 4 月 10 日現在でも有効ですか? 昨日、元のトークンが 60 日間有効でなくなったことに気付いたので、fb_exchange_token 呼び出しを実装しました。しかし、私が返す応答はまだ約2時間しか有効ではありません..つまり、これ:

access_token=AAAEHLUxxx...xx&expires=4404

トークンを取得するために Android SDK を使用してきましたが、私のアプリでは offline_access 権限が非推奨になりました。約 1 週間は正常に機能し、すべてのトークンは 60 日間有効でした。

于 2012-04-10T16:50:46.360 に答える