简短描述:
如果用户已经授予我的应用程序OAuth访问他们的谷歌个人资料,我想让他们不必每次登陆我的主页时都按“使用谷歌登录”按钮并自动登录。
如果用户还没有授予访问权限,我想向他们展示带有"登录使用谷歌"按钮的登录选项页面。
长描述:
我正在实现Google OAuth流,如此链接所述:
将OAuth 2.0用于Web Server应用程序
为了清楚起见,所讨论的流程如下:
我希望实现以下目标:
如果用户之前已经允许我的应用程序访问他们的google配置文件(在当前计算机上或其他计算机上),我希望他们在导航到我的应用程序的URL后立即登录到我的应用程序(使用google)。不用点击任何东西。
乍一看,这不是问题。为了实现这一点,我将自动化上述流程的步骤1和步骤2。用户导航到应用程序的URL后,将自动重定向到GoogleOAuth服务器,而无需按下“使用google登录”按钮。谷歌反过来会立即将用户重定向回我的应用程序,并提供有效的授权(同样不需要用户的任何输入)。其余的都一样。用户会有一种立即登录的感觉。
不过,这种方法有一个问题。如果用户第一次进入我的页面(之前没有授予我的应用程序访问权限),他们也会被重定向到GoogleOAuth页面。但由于他们还没有授予访问权限,也没有按下任何sing-in按钮,他们可能会盯着google oauth服务器页面,不知所措,不知道发生了什么。
是否有一些API,通过它我可以检测到用户尚未授予对我的应用程序的访问权限(我应该首先向他展示sing-in按钮)?
如果您的解决方案涉及一些API调用,请给我指出HTTP/RESTAPI,因为我不使用(也不想使用)任何更高级别的OAuth库。
谢谢
在初始OAuth重定向中添加“prompt=none”参数。这样,如果用户未登录或未授予您的应用程序权限,谷歌将不会阻止。
见http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest3.1.2.1章
其他可能的“提示”值的简短摘要: