जवाबों:
आप रीडायरेक्ट uri में कुछ भी नहीं जोड़ सकते हैं, Redirect uri निरंतर है जैसा कि Oauth की ऐप सेटिंग में सेट है। जैसे: http://www.example.com/redirect.html
अपने रीडायरेक्ट uri में कई पैरामीटर पास करने के लिए, उन्हें state
Oauth url पर कॉल करने से पहले पैरामीटर में संग्रहीत किया जाता है , प्राधिकरण के बाद का url आपके रीडायरेक्ट uri में समान पैरामीटर भेजेगा
state=THE_STATE_PARAMETERS
तो आपके मामले के लिए, यह करें:
/ 1। अपने मापदंडों का एक जसन स्ट्रिंग बनाएं ->
{ "a" : "b" , "c" : 1 }
/ 2। URL सुरक्षित रखने के लिए, यह एक base64UrlEncode करें
stateString = base64UrlEncode('{ "a" : "b" , "c" : 1 }');
यह बेस 64UrlEncoding और डिकोडिंग ( http://en.wikipedia.org/wiki/Base64#URL_applications ) का PHP उदाहरण है :
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=asdafwswdwefddg ,
स्थिति को फिर से प्राप्त करें, इसे आधार बनाएं, इसे भेजें, और आपके पास आपका डेटा है।
Google OAuth 2 के बारे में यहां और देखें:
state
यूआरआई को पुनर्निर्देशित करने और एक ही समय मेंCSRF
हमले को रोकने के लिए कई मापदंडों को पारित करने के लिए परम का उपयोग कैसे कर सकता हूं ?
CSRF
हमलों को रोकने ) में कई मापदंडों को जोड़ने का प्रबंधन किया था ?
यदि आप .NET में हैं तो आप सत्र में पैरामीटर को सहेज सकते हैं
HttpContext.Current.Session[{varname}]
और मापदंडों के बिना प्राधिकरण पृष्ठ पर पुनर्निर्देशित
Response.Redirect(your_uri_approved_with_no_querystring_parameters);
Session
से बचना चाहिए।
आप निम्न के रूप में यूआरएल के साथ पैरामीटर पुनर्निर्देशित कर सकते हैं,
जब आप 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 = पृष्ठ / दृश्य पैरामीटर है जिस पर मैं पैरामीटर के साथ प्रतिक्रिया चाहता हूं