Antworten:
Sie können der Umleitungs-URL nichts hinzufügen. Die Umleitungs-URL ist konstant, wie in den App-Einstellungen von Oauth festgelegt. Beispiel: http://www.example.com/redirect.html
Um mehrere Parameter an Ihre Umleitungs-URL zu übergeben, müssen Sie diese state
vor dem Aufrufen der Oauth-URL in den Parametern speichern. Die URL nach der Autorisierung sendet dieselben Parameter an Ihre Weiterleitungs-URL wie
state=THE_STATE_PARAMETERS
Gehen Sie für Ihren Fall folgendermaßen vor:
/ 1. Erstellen Sie eine JSON-Zeichenfolge Ihrer Parameter ->
{ "a" : "b" , "c" : 1 }
/ 2. Führen Sie einen base64UrlEncode aus, um die URL sicher zu machen ->
stateString = base64UrlEncode('{ "a" : "b" , "c" : 1 }');
Dies ist ein PHP-Beispiel für 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, '-_,', '+/='));
}
Jetzt wäre state so etwas wie: stateString -> asawerwerwfgsg,
Übergeben Sie diesen Status in der OAuth-Autorisierungs-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,
Für den serverseitigen Ablauf wird ein Token mitgeliefert: http://www.example.com/redirect.html?token=sdfwerwqerqwer&state=asdafwswdwefwsdg ,
Für den clientseitigen Ablauf wird er zusammen mit dem Zugriffstoken im Hash angezeigt: http://www.example.com/redirect.html#access_token=portyefghsdfgdfgsdgd&state=asdafwswdwefwsdg ,
Rufen Sie den Status ab, base64UrlDecode it, json_decode it und Sie haben Ihre Daten.
Weitere Informationen zu Google OAuth 2 finden Sie hier:
state
param auf mehrere Parameter übergeben uri umleiten und zu verhindern CSRF
Angriff zur gleichen Zeit ?
CSRF
Angriffe verhindern )?
Wenn Sie sich in .NET befinden, können Sie die Parameter in der Sitzung speichern
HttpContext.Current.Session[{varname}]
und leiten Sie ohne Parameter zur Autorisierungsseite weiter
Response.Redirect(your_uri_approved_with_no_querystring_parameters);
Session
sollte vermieden werden, dass IMO einen Client-Status speichert .
Sie können Parameter mit URL wie folgt umleiten:
Wenn Sie eine Antwort von Google erhalten, können Sie Parameter mit URL übergeben,
Siehe unten PHP- Code für das gleiche,
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');
}}
Im obigen Beispiel ist r = Seite / Ansicht ein Parameter, auf den ich die Antwort mit Parameter möchte