我对注册ID和令牌之间的关系感到困惑。在Google的GCM教程中,我们在开始时注册了注册ID。但是,我们也获得了一个令牌。现在,在图中,我们将注册ID发送到目标服务器。但是,我们也发送令牌吗?我知道令牌是从注册ID派生的。令牌是否用作GCM和应用程序之间的身份验证机制,服务器永远不知道令牌?
答案 0 :(得分:19)
如果您正在寻找有关Google Cloud Messaging,IMO的基本知识,请参阅以下内容:
基本上,您需要执行以下步骤:
Project Number
,即
将在客户端项目中用作SENDER_ID
;和 API server key
(在 凭据 创建),
将在服务器项目中用作API_KEY
。CLIENT_REGISTRATION_TOKEN
变量(或编写代码以将此标记发送到服务器应用程序)。您可以阅读以下问题中的更多内容,其中一个问题是您之前阅读过的一个问题:
了解更多信息:
来自Google Cloud Messaging: Overview
的关键概念<强>凭据强>
- 发件人ID 配置API项目时创建的唯一数值(以&#34;项目编号&#34;在Google Developers Console中提供)。在注册过程中使用发件人ID来标识允许向客户端应用程序发送邮件的应用服务器。
- API密钥保存在应用服务器上的API密钥,可让应用服务器授权访问Google服务。在HTTP中,API密钥是 包含在发送消息的POST请求的标头中。在XMPP中, API密钥在SASL PLAIN身份验证请求中用作 用于验证连接的密码。您何时获得API密钥 您配置您的API项目。
- 注册令牌 GCM连接服务器向客户端应用程序发出的ID,允许其接收邮件。注意 注册令牌必须保密。
希望这有帮助!
答案 1 :(得分:14)
GCM现在使用InstanceID的概念,它代表设备(Android或iOS)上的一个应用程序的单个安装。每个InstanceID都可以发出多个令牌。这些令牌用于标识InstanceID,可以过期和刷新。
在客户端设备上,初始化InstanceID,然后使用该InstanceID generate a token(注册令牌)。您将该令牌发送到您的服务器,该服务器使用令牌将消息发送到InstanceID(已安装的应用程序)。如果该令牌因任何原因(例如卸载了应用程序或令牌被泄露)而无效,a new token should be generated并发送到您的服务器。
答案 2 :(得分:-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