Как добавить параметры в google oauth2 redirect_uri?
Просто как redirect_uri=http://www.example.com/redirect.html?a=b
.
b
of a=b
является случайным.
Кто-нибудь может помочь?
Как добавить параметры в google oauth2 redirect_uri?
Просто как redirect_uri=http://www.example.com/redirect.html?a=b
.
b
of a=b
является случайным.
Кто-нибудь может помочь?
Вы не можете добавить что-либо к перенаправлению uri, перенаправление uri является постоянным, как установлено в настройках приложения Oauth. например: http://www.example.com/redirect.html
Чтобы передать несколько параметров вашему urid-перенаправлению, сохраните их в state
перед вызовом Oauth url, URL-адрес после авторизации отправит те же параметры вашему перенаправлению uri, что и
state=THE_STATE_PARAMETERS
Итак, для вашего случая сделайте следующее:
/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,
Передайте это состояние в URL авторизации OAuth:
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 здесь:
Если вы находитесь в .NET, вы можете сохранить параметры в сеансе
HttpContext.Current.Session[{varname}]
и перенаправить на страницу авторизации без параметров
Response.Redirect(your_uri_approved_with_no_querystring_parameters);
Вы можете перенаправить параметр с помощью 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 - это параметр, на который я хочу получить ответ с параметром