2

根据谷歌文档: 加载谷歌登录按钮后,它会立即检查用户是否已授权该应用程序。此检查称为“立即模式”,如果成功,Google 服务器会返回访问令牌并将新的授权结果对象传递给回调。如果按钮无法进行即时模式授权,则用户必须单击登录按钮才能触发访问流程。

我的 Google Plus 登录按钮是标题的一部分,注销时会加载主页,它再次呈现 google plus 按钮导致自动登录。因此,用户永远不会注销。当 G Plus 按钮被点击而不是 G Plus 按钮自身变红时,如何允许登录?

4

4 回答 4

1

您有两种方法可以立即删除 Google Plus 登录。

1-不是一个好方法:在你的按钮中使用 data-approvalprompt="force" 。我在下面写了一个例子:

    <span id="signinButton" >
       <span
        class="g-signin g-link"
        data-callback="signinCallback"
        data-clientid="*****.apps.googleusercontent.com"
        data-cookiepolicy="single_host_origin"
        data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read"    
        data-approvalprompt="force"
        style= "cursor:pointer;">
        Login With Google
      </span>
    </span>

这不是一个好方法,因为如果您添加它,那么 Google 会要求用户提供额外的离线访问权限。因此,由于此权限,它可能会让用户根本不会注册。

2-更好的方法:在您的 signincallback 函数中收到响应后,只需从 Google 注销即可。只需添加:

gapi.auth.signOut();

您应该在收到回复后写下这一行。最好将其保留在 request.execute(function(resp) 函数中的最后一行。

通过添加此代码,除非有人单击登录按钮,否则 Google 不会呈现登录信息。Google 也推荐这种方法。

于 2015-03-27T19:14:45.643 回答
1

'immediate' 参数为我做了这件事,虽然它与 'approvalprompt' 具有相同的效果,但会提示同意。Facebook 似乎更好地处理了这些选项。

gapi.signin.render("splashGPlusReg", { 
'callback': GPSignInCallback, 
'clientid': '<yourclientId>', 
'cookiepolicy': 'single_host_origin',
'immediate': false, 
'requestvisibleactions': 'http://schemas.google.com/AddActivity',
'scope': '<scopes>'                           
});
于 2013-10-17T07:45:14.533 回答
0

这不是最干净的修复,但您可以尝试过滤传递给回调的status.method属性。authResult

authResult.status.method过滤设置为触发的任何回调AUTO,但处理null(通过单个授权的 Google 帐户登录)或PROMPT(用户选择多个 Google 帐户之一)的任何回调。

于 2014-09-19T22:58:27.110 回答
0

我找到了一种方法来做到这一点,也许这正是你想要的:

禁用 Google+ 社交登录的自动身份验证

于 2013-08-28T17:51:08.693 回答