मुझे एक रास्ता मिला है, लेकिन यह थोड़ा दुखद है कि यह सुविधा gapi.auth.authorize
में शामिल नहीं है (या दस्तावेज नहीं है)।
वैसे भी, यदि आप मैन्युअल रूप से प्राधिकरण पॉपअप खोलते हैं, और उसके बाद परिणामी टोकन को संसाधित करते हैं, तो आप prompt=select_account
जैसे अतिरिक्त पैरामीटर पास कर सकते हैं, जो उपयोगकर्ता को अपना खाता चुनने की अनुमति देगा।
यहां एक कोड उदाहरण है। पॉपअप अवरुद्ध करने के साथ, पॉपअप को अवरुद्ध न होने के लिए आपको इस फ़ंक्शन को onclick
ईवेंट में कॉल करना होगा।
इस प्रकार, कोड वास्तव में उत्पादन तैयार नहीं है। हम ऐसे मामलों का प्रबंधन नहीं करते हैं जैसे उपयोगकर्ता अपनी सहमति देने से इनकार करते हैं, और हम समाप्ति समय जैसे अतिरिक्त टोकन जानकारी पास नहीं करते हैं।
var switchUserAccount = function (callback) {
var popup = window.open("https://accounts.google.com/o/oauth2/auth?client_id=102862643449-geb89aoann7dj6tsha4mtkhvos5mk01b.apps.googleusercontent.com"
+ "&prompt=select_account"
+ "&scope=https://www.googleapis.com/auth/userinfo.email"
+ "&redirect_uri=https://david-sandbox.appspot.com/autoclose.html"
+ "&access_type=online&response_type=token", "thewindow");
var waitForPopup = function() {
try {
var token = popup.location.hash.substring(14).split("&")[0];
console.log("FOund token !" + token);
if (token == "") {
console.log("Not ready yet")
setTimeout(waitForPopup, 500);
} else {
gapi.auth.setToken({access_token: token});
popup.close();
callback();
}
}
catch (e) {
console.log("Not ready yet, exception")
setTimeout(waitForPopup, 500);
}
};
waitForPopup();
}