我正在尝试在Android应用中使用Google Plus登录(后端支持)。
我可以从用户那里获得访问令牌和电子邮件,但知道我不知道如何从服务器识别该用户。我通过SSL发送邮件到服务器(电子邮件和oauth令牌)
当然,我可以用他们的电子邮件认出他们,但这会为每个人打开大门,知道数据库上的另一封电子邮件。
我如何验证用户是否经过了正确的身份验证并向我发送了此电子邮件的正确oauth令牌?
谢谢!
答案 0 :(得分:2)
两个想法:
1)通常情况下,如果可以提供帮助,则不应通过线路发送身份验证令牌。相反,您应该使用混合流,其中客户端在进行身份验证时获取一次性代码,将此一次性代码传递给您,并且您可以将其兑换为身份验证令牌和刷新令牌。使用此方法,您的服务器也代表用户具有脱机访问权限。有关详细信息,请参阅https://developers.google.com/+/web/signin/server-side-flow。 然而,我不完全确定它如何与Android库一起使用。
2)无论(1)如何,通常你可以做的是在服务器上使用带有“我”的用户ID的plus.people.get方法来获取用户的用户ID并根据你的期望来验证这一点。有关详细信息,请参阅https://developers.google.com/+/api/latest/people/get。
答案 1 :(得分:1)
您的使用授权代码流是一个完美的案例。
见link。它有一些您可能想要查看的工作流程图。在您的情况下,用户应该验证并接收授权代码(而不是令牌!)。
然后他会将授权代码发送到您的服务器,您可以将此代码交换为访问+刷新令牌。让您的客户注册该范围并拥有客户凭证。
当需要直接从用户的浏览器发送请求时,通常使用访问令牌流(称为隐式授权流)。
而且,正如@Prisoner已经提到的那样,你也可以离线访问。那将是一个更好的设计。
编辑 - 您可能还想查看What is the difference between the 2 workflows? When to use Authorization Code flow?