1. ホーム
  2. oauth-2.0

Facebook OAuth: カスタムcallback_uriパラメータ

2023-09-22 18:55:53

質問

Facebook OAuth2統合のために、動的なリダイレクトURLを持ちたいと思います。 たとえば、私の Facebook アプリでリダイレクト URL が次のようになる場合。

http://www.mysite.com/oauth_callback?foo=bar

特定のリクエストに対するリダイレクトURLを以下のようにしたいのですが、そうすればサーバー上で、認証コードをどのように処理するかについてのコンテキストを持つことができます。

http://www.mysite.com/oauth_callback?foo=bar&user=6234

認証ダイアログが送信された後にリダイレクトが実行され、認証コードが返ってきますが、アクセストークンを取得しようとすると、FacebookからOAuthExceptionエラーが返されます。 私のリクエストは以下のようなものです(わかりやすくするために改行を追加しています)。

https://graph.facebook.com/oauth/access_token
    ?client_id=MY_CLIENT_IDを指定します。
    &redirect_uri=http%3A%2F%2Fwww.mysite.com%2Foauth_callback%3Ffoo%3Dbar%26user%3D6234。
    &client_secret=MY_SECRET
    &コード=RECEIVED_CODE

すべてのパラメータはURLエンコードされており、コードも有効であるように見えます。 私は redirect_uri を以下のすべてに設定してみましたが、役に立ちませんでした。

  1. 私のサイトへのリクエストの実際の URL
  2. 私のサイトへのリクエストの URL から code パラメータを除いたもの。
  3. 自分のFacebookアプリケーションの設定で指定したURL

カスタムのリダイレクト URI パラメータはサポートされていますか。 サポートされている場合、私はそれらを正しく指定していますか? そうでない場合、Cookie を設定することを余儀なくされるか、または、Web サイトにコンテキストを供給するためのより良いパターンがあるのでしょうか?

どのように解決するのですか?

答えはわかりました。リダイレクト URL に追加のパラメータを追加するのではなく、リダイレクト URL に state パラメータをリクエストに追加して https://www.facebook.com/dialog/oauth :

https://www.facebook.com/dialog/oauth
    ?クライアントID=MY_CLIENT_ID
    &scope=MY_SCOPE(マイスコープ
    &redirect_uri=http%3A%2F%2Fwww.mysite.com%2Foauth_callback%3Ffoo%3Dbar。
    &状態=6234

このstateパラメータは、コールバックURLに渡されます。