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