156 votes

google oauth2 redirect_uri avec plusieurs paramètres

Comment ajouter un paramètre à google oauth2 redirect_uri?

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

Le b de a=b est aléatoire.

Quelqu'un peut aider?

298voto

DhruvPathak Points 16181
  1. Vous ne pouvez pas ajouter quoi que ce soit à l'redirect uri uri de redirection est constant que le jeu dans les paramètres de l'application du protocole Oauth. par exemple :http://www.example.com/redirect.html

  2. Pour passer plusieurs paramètres à votre redirect uri, ont stockés dans state paramètre avant d'appeler Oauth url, l'url après l'autorisation d'envoyer les mêmes paramètres de votre redirect uri comme state=THE_STATE_PARAMETERS

Donc, pour votre cas,faites ceci:

/1. créer une chaîne json de vos paramètres ->

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

/2. faire un base64UrlEncode , pour le rendre URL sécurité ->

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

C'est un PHP exemple de base64UrlEncoding et de décodage (http://en.wikipedia.org/wiki/Base64#URL_applications) :

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

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

Donc, maintenant, serait quelque chose comme : stateString -> asawerwerwfgsg,

Passer cet état dans OAuth autorisation d'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,

Pour le côté serveur de flux, il viendra avec jeton : http://www.example.com/redirect.html?token=sdfwerwqerqwer&state=asdafwswdwefwsdg,

Pour le côté client de flux, il viendra dans la table de hachage avec jeton d'accès: http://www.example.com/redirect.html#access_token=portyefghsdfgdfgsdgd&state=asdafwswdwefwsdg,

Récupérer l'état,base64UrlDecode, json_decode, et vous avez vos données.

Voir plus sur google OAuth 2 ici :

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

5voto

rufo Points 1244

Si vous êtes dans .NET, vous pouvez enregistrer les paramètres dans la session.

 HttpContext.Current.Session[{varname}]
 

et rediriger vers la page d'autorisation sans paramètres

 Response.Redirect(your_uri_approved_with_no_querystring_parameters);
 

2voto

Kiran Points 193

Vous pouvez rediriger le paramètre avec l'URL comme ci-dessous,

Lorsque vous obtenez une réponse de Google, vous pouvez passer le paramètre avec l'URL,

Voir ci-dessous le code php pour la même chose,

 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');
 

}

Dans l'exemple ci-dessus, r = page / view est un paramètre sur lequel je veux la réponse avec paramètre

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X