Google Cloud Endpoints - 切换用户/需要再次登录

时间:2014-09-25 20:41:18

标签: google-oauth google-cloud-endpoints

当您使用Google Cloud Endpoints进行身份验证时,如果有多个已注册的Google帐户已经授予了您的应用权限,那么它只会选择默认帐户,就像Gmail一样。

1)Gmail可以在右上角切换Google帐户。我将如何实现类似的目标?

2)即使用户已经登录,您是否可以要求用户再次登录自己的Google帐户?与用户更改帐户设置时类似。

1 个答案:

答案 0 :(得分:3)

我找到了一种方法,但在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();
    }