什么是授权实体? 在自己的应用程序中找不到gcm_defaultSenderId

我试图让我的应用程序与Google Cloud Messaging一起运行。 我正在关注可以在github上find的Google Cloud Messaging Quickstart App。

在他们的快速入门应用程序中,我们要求Google Cloud Messaging服务提供注册令牌,以便我们的应用程序实例可以与云聊天。

我find这行代码:

RegistrationIntentService.java::onHandleIntent(Intent intent): InstanceID instanceID = InstanceID.getInstance(this); String gcmRegistrationToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

令我困惑的部分是这个值: R.string.gcm_defaultSenderId它在快速启动应用程序中定义,但它是自动生成的。

我应该如何让我的应用程序生成该值?

我查找InstanceID.getToken的文档, 这里是getToken(java.lang.String, java.lang.String)

InstanceID.getoken返回一个令牌,授权实体(例如:云服务)代表实例ID标识的应用程序执行操作。 这与OAuth2令牌相似,除了适用于应用程序实例而不是用户。

函数标题如下所示:

 public String getToken (String authorizedEntity, String scope) 

我看到getToken需要的第一个参数是String authorizedEntity 。 那么,这个授权实体string应该是什么?
它清楚地标识了提出请求的应用程序的实例,但我该如何生成它? 在快速启动应用程序中,我找不到它在res/value/strings.xml定义的,我只能在R.java和app/build/generated/res/google-services/debug/values/values.xml

看起来像:

 <resources> <string name="gcm_defaultSenderId">175643285</string> </resources> 

该文件中只有一个string,该文件深埋在项目结构中。 我找不到任何地方代码生成这个gcm_defaultSenderId正在编程生成。

我很困惑,因为我怎么知道那根弦呢? 我从来没有定义该string,谷歌search“不能解决gcm_DefaultSenderId ”没有结果。 我正在尝试在自己的应用中实施Google云消息传递,因此我的应用当然不会自动生成该string。 我该怎么做这个ID号码?

这就是为什么我认为重要的是要明白InstanceID.getToken需要的这个authorizedEntitystring,以便我可以正确地生成一个给getToken。 也许我的想法是完全错误的,也许我不应该生成gcm_defaultSenderId,但我知道我不应该改变R.java,而values.xml文件也在“生成”文件夹下。

请帮助? 如果我在search中find答案,我会很乐意回答。 任何帮助非常感谢,注意:我的项目从Eclipse导出到Gradle ,所以它仍然有Eclipse项目/文件夹结构,这不应该导致任何问题,但values.xml文件是在不同的地方。

Solutions Collecting From Web of "什么是授权实体? 在自己的应用程序中找不到gcm_defaultSenderId"

R.string.gcm_defaultSenderId值由Gradle google-services插件生成,该插件使用带定义的常量的google-services.json文件。

该插件应用于Gradle:

 apply plugin: 'com.google.gms.google-services' 

有关更多信息,请查看在Android上实现GCM客户端,并查看如何获取google-services.json文件以及在开发者控制台中设置Gradle&app。

这是项目ID,我们需要填写该string的位置。 请参阅以下链接。

https://developers.google.com/instance-id/guides/android-implementation

生成令牌需要由Google Developers Console生成的项目ID。

 String authorizedEntity = PROJECT_ID; // Project id from Google Developers Console String scope = “GCM”; // eg communicating using GCM, but you can use any // URL-safe characters up to a maximum of 1000, or // you can also leave it blank. String token = InstanceID.getInstance().getToken(authorizedEntity,scope);