简短说明:
如果用户已经授予我的应用程序 OAuth 访问他们的谷歌配置文件的权限,我想让他们每次登陆我的主页并自动登录时都不必按“使用谷歌登录”按钮。
如果用户尚未授予访问权限,我想向他们显示带有“使用谷歌登录”按钮的登录选项页面。
详细说明:
我正在按照此链接中的描述实现 Google OAuth 流程:
Using OAuth 2.0 for Web Server Applications
为了清楚起见,有问题的流程如下:
我想实现以下目标:
如果用户之前已经允许我的应用程序访问他们的 google 配置文件(在当前计算机上或其他计算机上),我希望他们在导航到我的应用程序 URL 后立即登录到我的应用程序(使用 google)的印象。无需单击任何内容。
这乍一看不是问题。为此,我将自动化上述流程的第 1 步和第 2 步。用户将被自动重定向到谷歌 oauth 服务器 - 无需按下“使用谷歌登录”按钮 - 在他们导航到应用程序的 URL 之后。反过来,Google 会立即通过有效授权将用户重定向回我的应用程序(同样不需要用户的任何输入)。其余保持不变。用户会有立即登录的印象。
不过这种方法有问题。如果用户第一次访问我的页面(之前没有授予我的应用程序访问权限),他们也会被重定向到 google OAuth 页面。但是由于他们还没有授予访问权限,并且没有按下任何唱歌按钮,他们最终会盯着 google oauth 服务器页面感到困惑,不知道发生了什么。
是否有一些 API,通过它我可以检测到用户尚未授予对我的应用程序的访问权限(我应该先向他显示唱歌按钮)?
请,如果您的解决方案涉及一些 API 调用,请将我指向 HTTP/REST API,因为我不使用(也不想使用)任何更高级别的 OAuth 库。
谢谢。
最佳答案
将“prompt=none”参数添加到您的初始 OAuth 重定向。这样,如果用户尚未登录或未授予您的应用权限,谷歌就不会阻止。
参见 http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest 的第 3.1.2.1 章
其他可能的“提示”值的简短摘要:
关于oauth - Google OAuth - 如何检查用户是否已允许访问我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598011/