GCM 发送者 ID / 项目编号

3
为了发送GCM消息,我们需要从Google API控制台获取SENDER ID。请问这个SENDER ID的保密性非常重要吗?如果有人知道该ID,是否会有坏影响?我不小心把这个ID放在了我的项目中,能找到任何方法来修改它吗?我在Google API控制台上没有找到任何修改SENDER ID的选项!我应该担心吗?还是没问题?
服务器和浏览器API密钥可以更改,但是SENDER ID和PROJECT NUMBER不能更改。

考虑将标题改为一个问题。 - Henrik Erlandsson
3个回答

5
是的,您应该保护项目编号(对于GCM也是发送者 ID),否则任何人都可以使用它并计入使用API的次数。这类似于其他服务的API密钥,例如Google Maps。
我不知道除了创建新的Google账户之外是否有任何更改它的方法,但在Google API控制台的仪表板中有一个选项可以注册/生成项目ID,但我不确定GCM是否将其接受为发送者ID。您可以尝试一下。
编辑:
如果您的项目编号已暴露(在旧的API中,发送者ID是您的电子邮件),那么可能并不那么危险,因为仍然需要 API密钥 才能通过GCM发送通知。

1
iTech,感谢您的回复,但就我所测试的情况来看,如果您不知道服务器API密钥,SENDER ID是无法使用的。因此,如果我保护好服务器API密钥,这还会是一个问题吗? - Hadi tavakoli
是的,你说得对。两者都是必需的才能通过GCM发送消息。 - iTech

2

我想补充一点,虽然仅使用项目ID无法通过GCM发送通知,但另一个Android应用程序可以使用它来注册到GCM并从您的服务器接收通知。当然,为了从您的服务器接收通知,该应用程序必须首先联系您的服务器以发送其注册ID,因此根据服务器实现,您可以阻止这种情况发生。


0

我的理解是:

1)SenderID == ProjectID(正如iTech所指出的)

2)SenderID/ProjectID通过“googleservices.json”在构建时嵌入到您的应用程序中。

3)您的应用程序使用并需要您的SenderID(通过R.string.gcm_defaultSenderId),使用以下代码向GCM注册:

String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

4) 因此,根据我的理解,SenderID应该被包含在您的GCM应用程序中,并且不受保护,这是按设计要求的。


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