Facebookを使用してユーザーを認証しようとしています。 Ajax呼び出しを除いて問題なく動作します。ほとんどの場合、古いトークンを送信するだけで、次のようになります。
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
だから私がやろうとしたのは、すべてのajax呼び出しを次のようにラップすることです
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
return fn();
...
これは機能しなかったので、キャッシュを防ぐためにgetLoginStatusのパラメーターとして:trueを追加しました:
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
console.log('connected');
fn();
} else if (response.status === 'not_authorized') {
console.log('not_authorized);
} else {
console.log('not_logged_in');
}
},true);
すごい!それがひどく遅いことを除いて。私は何か間違ったことをしていますか?各アクションの後に新しいトークンを取得できるので、次のトークンの前に待つ必要はありませんか?
ありがとうW
Facebookのコメントは次のとおりです。
"OAuth認証コードの新しいセキュリティ制限。認証コードをアクセストークンと交換できるのは1回のみで、作成後10分以内にアクセストークンと交換する必要があります。これはOAuth 2.0仕様に準拠しており、最初から「認証コードは短命で1回使用する必要があります」と述べています。詳細については、認証ドキュメントをご覧ください。
これを回避する方法は、拡張アクセストークンAPIを使用することです。
https://developers.facebook.com/docs/howtos/login/extending-tokens/