web-dev-qa-db-ja.com

いくつかのパラメーターを持つGoogle oauth2 redirect_uri

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

redirect_uri=http://www.example.com/redirect.html?a=bのように。

a=bbはランダムです。

誰でも助けることができますか?

109
eason
  1. リダイレクトURIには何も追加できません。リダイレクトURIは、Oauthのアプリ設定で設定されているように一定です。例: http://www.example.com/redirect.html

  2. リダイレクトURIにいくつかのパラメーターを渡すには、Oauth urlを呼び出す前にstateパラメーターに保存します。承認後のURLは、state=THE_STATE_PARAMETERSと同じパラメーターをリダイレクトuriに送信します

したがって、あなたの場合、これを行います:

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

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

/ 2。 base64UrlEncodeを実行して、URLを安全にします->

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

これはPHP base64UrlEncodingとデコードの例です( http://en.wikipedia.org/wiki/Base64#URL_applications ):

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

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

状態は次のようになります: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

219
DhruvPathak

.NETを使用している場合、パラメータをセッションに保存できます

HttpContext.Current.Session[{varname}]

パラメータなしで認証ページにリダイレクトします

Response.Redirect(your_uri_approved_with_no_querystring_parameters);
5
rufo

以下のようにURLでパラメーターをリダイレクトできます。

Googleから応答を受け取ると、urlでパラメーターを渡すことができますが、

以下を参照してくださいphp同じコード

if (isset($_GET['code'])) {
   $client->authenticate();
   $_SESSION['token'] = $client->getAccessToken();
   $redirect = 'http://' . $_SERVER['HTTP_Host'] . $_SERVER['PHP_SELF'];
   header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL) . '?r=page/view');

}

上記の例では、r = page/viewは、パラメーター付きの応答が必要なパラメーターです

2
Kiran