我正在升级帐户以使用新plus.login
范围,因此我测试了添加仅具有userinfo
范围的用户,然后重新登录并plus.login
添加。结果是在授权访问面板中引入了一个新条目,而后面调用返回的访问令牌只有userinfo
权限。我通过进行经过验证的令牌调用以及尝试列出人员来测试这一点。
这是预期的行为吗?如果是这样,我应该事先撤销旧令牌吗?我认为通过/revoke
行动是可能的。服务器端移除 Oauth 令牌
更新:相关要点。这是使用 Ruby 的 Omniauth gem。我实际上不确定用户如何在授权访问面板中看到超过 1 个条目,但在这种情况下我可以看到 2 个。昨天测试了各种场景后,我有大约 6 个条目都属于同一个应用程序!请注意,我在任何时候都没有更改客户端 ID,实际上只有一个客户端 ID。
我希望我描述的情况可以被其他人复制;只需破解 Google 端 URL 以删除 plus.login 范围,然后在保留 URL 原样的同时再次登录。
更新(2):我还发现了这个问题:“您不应该请求 userinfo.profile 或 plus.me 与此范围相结合,因为它们被隐式包含在内,并且会为您的用户创建一个令人困惑的权限对话框。” 事实上,这不仅仅是一个 UX 权限问题。Google 似乎实际上不会针对用户存储“plus.me”范围,因此这意味着即使用户已经授予权限,它也会始终显示 OAuth 权限对话框(我认为因为它会进行简单的相等性检查和通知 plus .me 被请求,但不针对用户存储)。
更新(3):关于使用错误登录的错误是由我的代码执行 user.login || 之类的操作引起的 user.signup 不更新登录时的令牌数据。所以现在它在每次登录后更新访问令牌和刷新令牌。(我仍然不明白为什么每个客户端-用户组合需要多个令牌。)