应用服务器如何将Google帐户与用户的设备相关联?

时间:2012-09-11 00:01:05

标签: android oauth-2.0 openid google-account google-cloud-messaging

我希望用户能够从网络服务器和/或原生PC应用程序输入数据并将其传输到他们选择的Android设备,其方式与Google Play在设备上的安装方式非常相似。

我想使用用户的Google帐户authentication在应用服务器和向GCM注册的用户的Android设备之间建立链接。

我在Google云端消息传递API documentation中找不到如何处理此类身份验证,但确实在GCM论坛中找到了此unanswered question

我想通过他或她的Google帐户从网络应用程序验证用户身份。同样,Android应用程序会以某种方式获取同一Google帐户的句柄,该帐户将在初始GCM注册的同时发送到Web应用程序服务器。

然后,当用户使用Web应用程序时,服务器提供用户已经注册到服务器的设备列表,以便可以提示用户他或她想要将数据发送到哪个Android设备。 / p>

如何在网络服务器和设备上完成此操作?

使用Google帐户进行身份验证后,我可以使用哪些信息在两次登录之间建立链接?

2 个答案:

答案 0 :(得分:4)

您应该使用user_id之后从Google帐户服务器返回的registration来唯一标识每个用户。不得出于多种原因使用电子邮件地址:

  • 访问电子邮件地址可能需要用户提供其他权限,并且由于信任问题而阻止用户使用您的服务/应用。
  • 增加保护用户电子邮件地址数据库的责任
  • 用户可以在Google帐户中更改其电子邮件地址,但无法更改其用户ID。
  • 用户可以将一个电子邮件地址与多个用户ID相关联,因此不一定是唯一的。

以下序列图显示了客户端Android应用的初始注册:

initial registration from client Android app

下图显示了客户想要从浏览器访问其设备时会发生什么:

client wants to access his device from a browser

请注意,虽然未显示,但客户端Android应用程序现在可以通过应用程序服务器与客户端浏览器进行通信。

答案 1 :(得分:1)

您在注册GCM时从设备获得的user_id应与您使用应用的OAuth令牌获得的user_id相同。只需将OAuth令牌和注册ID存储在用户存储库中,并将其与user_id相关联。

enter image description here