当您使用Google Cloud Endpoints进行身份验证时,如果已经登录了多个Google帐户,这些帐户已经授予了您的应用程序许可,则只需选择默认帐户即可,就像Gmail一样。
1)Gmail可以在右上角切换Google帐户。我将如何实现类似的目标?
2)即使用户已经登录,您是否可以要求用户再次登录其Google帐户?与用户更改帐户设置时类似。
我找到了一种方法,但是对于并未包含(或未记录)此功能,我感到有些遗憾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();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句