Web &引用;立即“U失败”无法自动登录用户

Web &引用;立即“U失败”无法自动登录用户,web,google-plus,Web,Google Plus,我在使用Google+登录开发网站时遇到了一个问题: 我是按照医生告诉我的一步一步做的,但我在第四步总是失败: 结果总是“立即失败”-无法自动登录用户“,我只是不知道为什么,有人能帮我吗,非常感谢!:-(请注意,在您指向的示例代码中,“立即\u失败”检查被注释掉。这是有意的,因为用户第一次遇到页面上的登录按钮时,它将失败 它失败的原因是,当页面首次加载时,在用户按下按钮之前,会向谷歌发送一个请求,以确定用户是否已经登录(例如,通过谷歌或其他网站)。如果他们已登录,则无需再次登录,因此无需显示该

我在使用Google+登录开发网站时遇到了一个问题: 我是按照医生告诉我的一步一步做的,但我在第四步总是失败:


结果总是“立即失败”-无法自动登录用户“,我只是不知道为什么,有人能帮我吗,非常感谢!:-(

请注意,在您指向的示例代码中,“立即\u失败”检查被注释掉。这是有意的,因为用户第一次遇到页面上的登录按钮时,它将失败

它失败的原因是,当页面首次加载时,在用户按下按钮之前,会向谷歌发送一个请求,以确定用户是否已经登录(例如,通过谷歌或其他网站)。如果他们已登录,则无需再次登录,因此无需显示该按钮。但如果他们已登录,则您将收到“立即失败”响应,并且需要显示(或不清除)该按钮

tl;dr-不必担心页面首次加载时立即获取失败。这是正常的。

作为一种解决方法,我使用gapi.auth.sign回调中的方法。以下是我的代码:

gapi.auth.signIn({
    'callback': gPlusLoginCallback
});

function gPlusLoginCallback(authResult) {
    if (authResult['status']['signed_in']) {
        doSmth(authRes['access_token']); 
    } else if (authResult['error'] == "immediate_failed") {
        gapi.auth.authorize({
            client_id: gplusClientId,
            scope: 'https://www.googleapis.com/auth/plus.login email',
            immediate: true
        }, function (authRes) {
            if (authRes['status']['signed_in']) {
                doSmth(authRes['access_token']);
            }
        });
    }
}

function doSmth(accessToken){
    //Do smth
}
将此设置“立即:真”更改为“立即:假”。
但是如果你想让实现更复杂,请看这里的第一个示例。你必须调用Google的“gapi.auth.authorize({…”),第一个是“immediate:true”,第二个是“immediate:false”。

这个问题很老了,但我最近遇到了这个问题

在我的例子中,这是因为我将
提示符
指定为
。如果用户以前从未登录过您的平台,我想Google不喜欢这样


每当我将其更改为同意或完全删除时,效果都非常好。

在我的情况下,错误是因为明确地将提示指定为“无”,类似于前面的回答


它通过指定
prompt=None
对我起作用,或者按照官方的说法,您可以跳过此参数。

您可以发布您正在使用的代码吗?这在上的工作示例中显示。