3

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

我想使用用户的谷歌账户认证来建立应用服务器和用户在 GCM 中注册的 Android 设备之间的链接。

我在 Google Cloud 消息API 文档中找不到关于如何处理这种身份验证的任何提及,但确实在 GCM 论坛中找到了这个未回答的问题。

我想通过他或她的 Google 帐户对来自网络应用程序的用户进行身份验证。类似地,Android 应用程序会以某种方式获得同一个 Google 帐户的句柄,该句柄将与初始 GCM 注册同时发送到 Web 应用程序服务器一次。

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

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

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

4

2 回答 2

4

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

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

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

从客户端 Android 应用程序初始注册

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

客户想从浏览器访问他的设备

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

于 2012-09-12T22:07:40.980 回答
1

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

在此处输入图像描述

于 2012-09-12T16:47:22.387 回答