2

約 1 週間前、自分の Web サイトでの Facebook ログインは正常に機能していましたが、「コード」を使用してアクセス トークンを取得しようとすると、「この認証コードは使用されています」というエラーが表示されます。多くのドキュメントと提案を確認しましたが、結果はありません。

再現手順 (FB PHP SDK を使用):

  1. 正しい urlencoded リターン uri (末尾のスラッシュ付き) を使用して、ユーザーを FB 認証に送信します。

    https://www.facebook.com/dialog/oauth?client_id=[my_cid]&redirect_uri=http%3A%2F%2Fmydomain.com%2Fauth%2Ffacebook%2F&state=e15e0894cd922098f9f8f340c820538d&scope=email&display=page
    
  2. リダイレクト uri でコード パラメータを受け取る (すべてうまくいく)

  3. アクセス トークンのリクエストを送信しています:

    https://graph.facebook.com/oauth/access_token?client_id=[my_cid]&redirect_uri=http%3A%2F%mydomain.com%2Fauth%2Ffacebook%2F&client_secret=[my_secret]&code=[long_code_goes_here]
    

urlencoded redirect_uri も試しました。

なんで?

4

1 に答える 1

2

これは、これまでオプションであった Facebook の変更によるものですが、2012 年 12 月 5 日にすべてのユーザーに公開されます。2012 年12 月の破壊的変更の開発者ロードマップから:

OAuth 承認コードの新しいセキュリティ制限 承認コード をアクセス トークンと交換できるのは 1 回のみで、作成後 10 分以内にアクセス トークンと交換する必要があります。これは OAuth 2.0 仕様に沿ったものであり、最初から「認証コードは短命で使い捨てでなければならない」と述べられています。詳細については、認証に関するドキュメントをご覧ください。

そのため、ユーザーの access_token を初めて取得するときは、それを保存し、次にユーザーが FBAPI と対話する必要があるときに明示的に設定する必要があります。

于 2012-12-24T06:40:24.503 に答える