Android GCM的SENDER_ID,如何获取?

84

我尝试迁移到GCM,但在提供SENDER_ID时遇到了问题。我使用了来自Google的演示项目。如果我理解正确的话,在这个项目中,我需要在CommonUtilities.java文件中为应用程序提供一个SENDER_ID

我提供的SENDER_ID是我在https://code.google.com/apis/console/上注册的API密钥,形式如下:AIzaSyAxxxxxxx_xxxxxxxxxxxnoGZw(总共40个字符)。

使用这个字符串作为SENDER_ID,我在“BroadcastReceiver mHandleMessageReceiver”中收到一个错误消息:From GCM: error (INVALID_SENDER)。

问题出在哪里? 我提供的字符串不是SENDER_ID吗?

谢谢。


以下是获取GCM Sender Id和API密钥的逐步过程 - http://ajaxtown.com/article/google-api-key-and-sender-id-for-web-push-notifications - Abhishek Saha
经过这些更改,该信息现在可以在其他地方找到。https://stackoverflow.com/questions/38863078/where-do-i-find-my-gcm-sender-id/38987472#38987472?newreg=08b77f75d70447978c4aab760f115f75 - Mateusz880
10个回答

183

不是,SENDER_ID是你在Google API控制台注册的项目ID,应该是一个数字字符串。例如,在您的浏览器URI中,您应该看到这个:

https://code.google.com/apis/console/#project:4815162342

发送方ID为4815162342。

更新后的答案:

谷歌尚未完全更新其文档。上面的答案是旧的,它基于这个文档,似乎仍未更新。

根据更新的Google文档,看起来在Google API控制台上的项目编号被用作发送方ID


3
Zelter,使用电子邮件地址作为sender_id是被弃用的C2DM注册方式。请参见:http://developer.android.com/guide/google/gcm/c2dm.html,'Client Changes'下面的部分:迁移非常简单!应用程序中唯一需要更改的是将注册意图中sender参数传递的电子邮件账户替换为在新服务注册时生成的项目ID。 - azgolfer
2
谢谢azgolfer。这个迁移怎么可能指望任何人都知道呢?这简直就像是Google正在尽其所能地让它变得棘手。 - Eurig Jones
3
嘿,@azgolfer,你能根据我下面的回答更新你的答案吗?https://dev59.com/VGgu5IYBdhLWcg3we3Ct#27020029 GCM已经从使用项目ID更改为使用项目编号。 - Adam
1
@Adam和其他人,如果我们应该使用项目编号,为什么谷歌不更新文档来说明这一点... - Bobby Hargett
2
SENDER_ID可以在google-services.json文件(配置文件)中找到,格式为"project_number": "12456789"。 - Erdi
显示剩余5条评论

57

我已经完成了最新的Google API控制台。

如何获取SenderId

步骤

  1. 打开Google API控制台
  2. 创建项目
  3. 点击左侧菜单图标
  4. 点击Google Cloud平台
  5. 您将从那里获得SenderId

参考:

enter image description here

希望这能帮到您。


作为注意事项,您不应该通过过度绘制来进行审查,而是应该使用框选工具选择要删除的部分。您的URI和Projekt-ID对任何人都是可读的,特别是对于有恶意意图的人。 - HopefullyHelpful

24

进入您的Google APIs控制台页面。从左侧的下拉菜单中选择您使用的项目。选择“概述”,现在您可以看到您的项目编号。这就是您需要使用的SENDER_ID

另一种获取项目编号的方法是从您的URL中获取"project"的值。您的URL必须像这样:"https://code.google.com/apis/console/b/0/#project:886025556782"。这里的项目号码是"886025556782",这个数就是SENDER_ID。


如果我的项目链接中没有显示任何编号怎么办?实际上,我的链接是这样的:“https://console.developers.google.com/project/Project ID”。 - Priyank
Priyank,请看我的回答。Google最近对此进行了一些更改。https://dev59.com/VGgu5IYBdhLWcg3we3Ct#27020029 - Adam

9

截至2014年11月的最新答案:如果您最近创建了API项目

首先,正确的做法是进入Google开发者控制台并找到已启用GCM的项目。当查看概述部分(左侧导航面板)时,您会看到右侧列出的项目ID和项目编号。对我来说,项目ID失败了(这就是我来到这里的原因),但当我尝试使用项目编号时,现在我能够正确地注册我的客户端。

请注意,这与Google最近修改如何分配项目ID有所不同。今年10月,我创建了一个项目,并获得了一个全数字的项目ID,我认为这应该可以正常工作。但是今天我创建的一个项目被赋予了一个由两个单词和一个数字组成的ID(例如Hamster-Party-420),以及一个数字项目编号。我的项目URL包含Hamster-Party-420,而项目编号仅在概述屏幕上可见。


6

这是另一个更新的答案,为那些感到困惑(就像我一样)提供了更多的解释。(特别鸣谢@azgolfer、@PankajAndroid和@Adam)

1- 如果您在https://console.developers.google.com上创建了一个项目,您可以在项目概述中看到两个东西:“项目ID”和“项目编号”。项目ID不再是数字,而是字母数字组合,例如master-xxxxx-1234项目编号是一个11位数,例如123456789100。

project dashbaord

2- 即使您检查浏览器链接,也可以找到它: https://console.developers.google.com/project/master-xxxxx-1234

那么master-xxxxx-1234是SENDER_ID(有些地方称为PROJECT ID)吗?不是。

您必须在GCM中使用项目编号作为项目ID。

3- 您在哪里可以交叉检查项目ID是否被用作项目ID?

在API Dashbaord上。(网址:https://code.google.com/apis/console/b/0/?noredirect#project:12345678900 - 其中12345678900是项目仪表板上的项目编号。

google api dashboard

概述:项目仪表板和API仪表板中的项目ID是不同的。在API仪表板中,项目仪表板中的项目编号用作项目ID,而项目仪表板中的项目ID用作API仪表板中的项目名称。因此,在开发者控制台创建项目时,在项目仪表板中显示的项目编号将用作GCM中的SENDER_ID。


4
在最新版本的开发者控制台中,前往“仪表板”,点击“项目:Turtle Power”下方的下拉箭头,您可以立即看到项目编号!将其用作您的SENDER_ID。请注意,这是一个虚假项目,请不要尝试。如需参考,请查看以下截图:enter image description here

2

1
我们花了几个小时来解决这个问题。问题在于我们的android清单文件中没有包含发送者ID!

0

-3

你正在使用的SENDER_ID实际上就是授权密钥。 你可以在项目的Google APIs控制台页面URL中找到SENDER_ID。

https://code.google.com/apis/console/#project:8543162367

这里的8543162367将是您的SENDER_ID, 而且项目ID不再是数字,它可以是字母数字混合或仅数字或仅字母,但其位置与我展示的相同。


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