2

ユーザーを次のように誘導する単純なサインイン ボタンがあります。

https://graph.facebook.com/oauth/authorize?client_id=APP_ID&redirect_uri=CALLBACK_URL&type=web_server&scope=publish_stream,offline_access,email,friends_likes,user_likes .

コールバック リクエスト ハンドラCALLBACK_URLはパラメータを取得し、次の場所codeに渡します。

https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&code=CODE&redirect_uri=REQUEST_URL

そして、アクセス トークンを含む応答を期待します (これREQUEST_URLは、Facebook からの着信リダイレクトの URL であることに注意してください)。これは 99% の確率で成功しますが、ときどき次のようになります。

{"error":{"message":"This authorization code has been used.", "type": "OAuthException","code": 100}}.

コードは 1 回しか使用できず、有効期間は 10 分間であることは理解していますが、すぐにコードを引き換えており、アクセス トークンのためにコードを 1 回しか送信していないことがログに示されています。

他の誰かがこれを見たことがありますか?

Facebook が間違ったエラーを送り返している可能性はありますか?

4

1 に答える 1

0

in protected function parseSignedRequest($signed_request) return の直前にこれらの行を追加します

/*
 * This method sets new code, and does not update persistent data,
 * that leads to persistent data loss and duplicate call to oAuth.
 * Duplicate call to oAuth with same auth code leads to error.
 * So persistent data must be changed alongside code changes.
 */
$this->setPersistentData('code', $data['code']);

これは一時的な解決策であり、私は Facebook 開発者ではありません。

于 2013-04-29T18:55:45.677 に答える