Google GCM,Token与Registration ID的区别

9
我对注册ID和令牌之间的关系感到困惑。在Google的GCM教程中,我们在开始时注册一个注册ID。然而,我们也获得了一个令牌。现在,在图表中,我们将注册ID发送到目标服务器。但是,我们是否也发送令牌?我知道令牌是从注册ID派生出来的。令牌是否用作GCM和应用程序之间的身份验证机制,而服务器不知道令牌的存在?
3个回答

19
如果您正在寻找有关Google Cloud Messaging的基础知识,我认为您可以参考以下内容:
基本上,您需要执行以下步骤:
  1. Google Developers Console上创建一个新项目。在此步骤中,为了简单起见,您只需要记下2个值:Project Number,它将用作客户端项目中的SENDER_ID;以及在Credentials中创建的API服务器密钥,它将用作服务器项目中的API_KEY
  2. 为服务器端创建一个新的简单Android项目(使用以下链接中提供的基本源代码)。
  3. 为客户端创建一个新的简单Android项目(使用以下链接中提供的基本源代码。我从Google Cloud Messaging - GitHub的原始源代码进行了自定义)。
  4. 运行客户端应用程序,您将获得注册令牌(表示您的设备已成功注册)。然后,在服务器应用程序中将此令牌硬编码到CLIENT_REGISTRATION_TOKEN变量中(或编写代码将此令牌发送到服务器应用程序)。
你可以阅读以下问题的更多信息,其中一个是你之前提出的问题之一:
  1. 如何使用Android Studio实现GCM Hello World
  2. 为Android添加Google云消息(GCM)-注册过程

更多信息请参见:

Google Cloud Messaging: 概述中的关键概念

凭据

  • 发送者 ID:在配置 API 项目时创建的唯一数字值(在 Google 开发者控制台中表示为“项目编号”)。发送者 ID 在注册过程中用于标识允许向客户端应用程序发送消息的应用程序服务器。
  • API 密钥:保存在应用程序服务器上的 API 密钥,使应用程序服务器有权访问 Google 服务。在 HTTP 中,API 密钥包含在发送消息的 POST 请求的头部中。在 XMPP 中,API 密钥作为密码用于 SASL PLAIN 认证请求来验证连接。您在配置 API 项目时获取 API 密钥。
  • 注册令牌:由 GCM 连接服务器发放给客户端应用程序的 ID,允许它接收消息。请注意,注册令牌必须保密。

希望这可以帮到您!


好的,所以服务器只关心注册ID,它完全不关心令牌。 - mrQWERTY
3
注册令牌等同于注册 ID,在客户端应用程序获取,然后您必须将其提供给服务器应用程序。 - BNK
也许你的意思是SENDER_ID,就像我在第一步中所说的那样。 - BNK
1
@TahaKirmani 你是不是指 google-services.json 文件?将其保存在 YourProject\app 路径下。 - BNK
1
@TahaKirmani,“with the app”是什么意思?我认为你可以参考我的回答中的两个链接。 - BNK
显示剩余8条评论

14

GCM现在使用InstanceID的概念来表示设备(Android或iOS)上应用程序的单个安装。每个InstanceID可以发出多个令牌。这些令牌用于标识InstanceID,可以过期和刷新。

在客户端设备上,您初始化一个InstanceID,然后使用该InstanceID生成令牌(注册令牌)。您将该令牌发送到您的服务器,服务器使用该令牌向InstanceID(已安装的应用程序)发送消息。如果由于任何原因使该令牌失效,例如卸载应用程序或令牌受到威胁,则应生成新令牌并发送到您的服务器


有时候 Stack Overflow 的用户比 Google 解释得更好,我不知道这是否那么简单。谢谢。 - Ahmad Muzakki

-1

我仍然成功地使用注册ID方法进行注册,直到2016年5月11日。

if (checkPlayServices()) {
            gcm = GoogleCloudMessaging.getInstance(this);
            regid = getRegistrationId(context);

            if (regid.isEmpty()) {
                registerInBackground();
            }
        } else {
            Log.i(TAG, "No valid Google Play Services APK found.");
        }

APA91bHLUfr71D6K7VTrRH3LGiLFxGNr3qRi3xOB_yNl0fLYsqhlgYXxHzOhQx2WKgqZI3sqxa1ZPORa0-5YBZ1_OFLm9cEg1bTh7wtrpCsHW91MSs2BMIXrHEqyjj2TeoVxnAzA5U8s


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接