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