1. ホーム
  2. redirect

[解決済み] Google OAuth 2.0 redirect_uri を複数のパラメータで指定する。

2022-05-10 18:42:05

質問

Google OAuth 2.0にパラメータを追加する方法 redirect_uri ?

ちょうどこんな感じ。

redirect_uri=http://www.example.com/redirect.html?a=b

ba=b はランダムです。

だれでも助けることができるか。

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

  1. リダイレクトURIは、Oauthのアプリ設定で設定されたとおりに一定です。 で設定されたとおりになります。 例えば http://www.example.com/redirect.html

  2. リダイレクト URI に複数のパラメータを渡すには、それらのパラメータを state パラメータに格納しておくと、認証後の url は同じパラメータを state=THE_STATE_PARAMETERS

というわけで、あなたの場合は、こうしてください。

/1.パラメータのjson文字列を作成します ->

{ "a" : "b" , "c" : 1 }

/2. base64UrlEncode をして、URLセーフにする ->

stateString = base64UrlEncode('{ "a" : "b" , "c" : 1 }');

これは、base64UrlEncoding & decodingのPHPの例です( http://en.wikipedia.org/wiki/Base64#URL_applications ) :

function base64UrlEncode($inputStr)
{
    return strtr(base64_encode($inputStr), '+/=', '-_,');
}

function base64UrlDecode($inputStr)
{
    return base64_decode(strtr($inputStr, '-_,', '+/='));
}

ということで、今のstateは次のようになります:stateString -> asawerwerwfgsg,

OAuth認証のURLでこの状態を渡します。

https://accounts.google.com/o/oauth2/auth?
  client_id=21302922996.apps.googleusercontent.com&
  redirect_uri=https://www.example.com/back&
  scope=https://www.google.com/m8/feeds/&
  response_type=token&
  state=asdafwswdwefwsdg,

サーバーサイドのフローでは、トークンと一緒に表示されます。 http://www.example.com/redirect.html?token=sdfwerwqerqwer&state=asdafwswdwefwsdg ,

クライアント側のフローでは、アクセストークンと一緒にハッシュで入ってきます。 http://www.example.com/redirect.html#access_token=portyefghsdfgdfgsdgd&state=Asdafwswdwefwsdg。 ,

状態を取得し、base64UrlDecodeし、json_decodeすれば、データができあがります。

google OAuth 2について詳しくはこちら。

http://code.google.com/apis/accounts/docs/OAuth2.html