我正在尝试支持“混合”联合登录和oAuth2(使用this document中的逻辑)来提供以下网络服务:
以下是我所做的步骤。
问题:如果我在我的Google帐户中转到授权访问您的Google帐户部分,则表明我的网站可以访问“Google Analytics。但是,它没有说签名使用您的Google帐户。这就是我要完成的工作。我原以为使用逻辑会启用使用您的Google帐户登录。我做错了什么?是谷歌的适用电话,以便用户可以登录我的网站?
答案 0 :(得分:1)
如果您的网站可以使用OAuth访问您的通讯录或Google Analytics,您将永远不会看到“使用您的Google帐户登录”。我非常确定只有在您只使用OpenID(非OAuth)进行登录时才会这样做。
具体而言,OAuth用于授予您访问API以创建/更新/删除数据的权限,而OpenID则用于登录。
答案 1 :(得分:0)
如果您询问如何识别用户以便将来登录,您有两种选择:
将OAuth与OpenID混合使用,称为混合。我已将其描述为on this answer。
成功进行OAuth授权后,使用userinfo范围并请求userinfo(电子邮件等)。它在Google OAuth 2 documentation。
如果您的意思是在以后的访问中自动登录您的网站,您可以使用OpenID“立即模式”(openid.mode参数)。
答案 2 :(得分:0)
当用户被重定向回来时,您从自己的(服务器端?)代码调用第二个请求,并获取他们的电子邮件地址。成功获取后,表示用户已登录。您可以将其添加到会话中(例如,作为cookie),只要您拥有它,用户就会登录。您通过忘记电子邮件地址使用户注销,因此请清除会话/ cookie。
答案 3 :(得分:0)
将此参数添加到https://accounts.google.com/o/oauth2/auth
网址电话:approval_prompt=force
,然后使用您的Google帐户登录将始终显示,无论用户是否已登录或任何其他帐户。
所以调用就像这个https://accounts.google.com/o/oauth2/auth?client_id=<client id>&redirect_uri=<uri>&scope=<scope>&access_type=<online or offline>&response_type=code&approval_prompt=force