gapi.auth.authorize with immediate:true不起作用

时间:2015-10-27 06:49:03

标签: javascript oauth-2.0 google-oauth google-cloud-endpoints gapi

我正在尝试使用Gmail Oauth。

当我用 immediate:true 调用此函数时,它仍然在授权时显示弹出窗口。

请告诉我是否存在任何错误,也可以采用其他方法。

gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, callbackAuthResult);

这是我的代码:

function signin(getAuthStatus) {

gapi.auth.authorize({
        'client_id': 'myID',
        scope: 'email', immediate: true
    },getAuthStatus);

}

function getAuthStatus() {
        gapi.client.Myendpoint.MyEndpointMethod().execute(function (resp) {
            console.log(resp);
}

1 个答案:

答案 0 :(得分:3)

首先,我们必须了解oauth过程的工作原理,

在Google OAuth中,

如果立即值为 false ,则浏览器会打开一个弹出窗口,人们必须允许您的应用从Google获取详细信息。

如果立即值为 true ,则会自动授权,无需任何弹出窗口,人们不必允许该应用程序。

立即值保持为 false ,同时您要求用户首次登录您的应用程序,然后浏览器将打开弹出窗口,用户将允许您的应用程序获取细节。从下次开始,无论您在何处使用OAuth在应用中进行经过身份验证的呼叫,都应将立即值设置为 true ,因为用户已经允许您的应用,因此您将获得用户信息直接而不是一次又一次地询问他的权限。