компания Google OAuth2, которые URI перенаправления с несколькими параметрами
как добавить параметры в Google OAuth2 redirect_uri?
просто так redirect_uri=http://www.example.com/redirect.html?a=b
.
The b
of a=b
является случайным.
кто может помочь ?
3 ответа:
вы не можете ничего добавить в uri перенаправления, URI перенаправления является постоянным, как установлено в настройках приложения Oauth. например :http://www.example.com/redirect.html
чтобы передать несколько параметров в ваш uri перенаправления, сохраните их в
state
параметр перед вызовом url-адреса Oauth url-адрес после авторизации отправит те же параметры в ваш uri перенаправления, что иstate=THE_STATE_PARAMETERS
так что для вашего случая, сделайте это:
/1. создайте строку json ваших параметров ->
{ "a" : "b" , "c" : 1 }
/2. сделать base64UrlEncode , чтобы сделать это безопасный URL-адрес ->
stateString = base64UrlEncode('{ "a" : "b" , "c" : 1 }');
это PHP пример base64UrlEncoding & decoding (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 здесь:
Если вы находитесь в .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=страница / просмотр это параметр, на который я хочу получить ответ с параметром