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

2024-01-24

我正在尝试让我的应用程序与 Google Cloud Messaging 一起运行。我正在关注 Google Cloud Messaging Quickstart 应用程序,可以在此处找到github https://github.com/googlesamples/google-services/tree/master/android/gcm.

在他们的快速启动应用程序中,我们有时会向 Google Cloud Messaging 服务请求注册令牌,以便我们的应用程序实例可以与云通信。

我找到这行代码:

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 的文档,它是here https://developers.google.com/android/reference/com/google/android/gms/iid/InstanceID# getToken(java.lang.String, java.lang.String)

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

函数头看起来像:

public String getToken (String authorizedEntity, String scope)

我看到第一个参数getToken想要的是String authorizedEntity。 那么,这个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>

该文件中只有一个字符串,并且该文件被深深地埋在项目结构中。 我在代码中找不到任何地方gcm_defaultSenderId正在以编程方式生成。

我很困惑,因为我怎么知道那根绳子在那里?我从未定义过该字符串,并在谷歌上搜索“无法解析”gcm_DefaultSenderId" 没有给出任何结果。我正在尝试在我自己的应用程序中实现 Google Cloud Messaging,所以我自己的应用程序当然不会自动知道生成该字符串。我应该如何生成该 id 号?

这就是为什么我认为了解 InstanceID.getToken 想要的授权实体字符串很重要,这样我就可以正确生成一个提供给 getToken 的字符串。也许我的想法是完全错误的,也许我不应该生成 gcm_defaultSenderId,但我知道我不应该改变 R.java,并且values.xml文件也在“生成”文件夹下。

请帮助?如果我在搜索中找到答案,我会很乐意发布答案。非常感谢任何帮助,请注意:我的项目已导出到Gradle from Eclipse,因此它仍然具有 Eclipse 项目/文件夹结构,这不会导致任何问题,但是values.xml文件位于不同的位置。


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

该插件在Gradle中应用:

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

欲了解更多信息,请检查在 Android 上实现 GCM 客户端 https://developers.google.com/cloud-messaging/android/client并查看如何获得google-services.json在开发者控制台中创建文件并设置 Gradle 和应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • SSIS:默认日志记录 OnError 不适用于 RetainSameConnection

    我在连接管理器中使用 RetainSameConnection true 因为我正在使用事务 如果成功 失败 则最后开始事务 提交或回滚 我还使用默认的 SQL Server 日志记录提供程序并选择了 OnError 事件 以及其他事件 问
  • awk 输出到多个 shell 变量

    我的 awk 程序中有多个打印语句 我希望它们将其传递回 shell 变量 是否可以 For eg awk r 10 q 20 rr sprintf 04 0f r qq sprintf 05 0f q 我可以将 rr 和 qq 的输出传递
  • 错误:[$resource:badcfg] 资源配置错误。预期响应包含一个数组,但得到一个对象?

    如何修复错误 resource badcfg 资源配置错误 预期回应 包含一个数组但有一个对象 服务 angular module admin services ngResource GET TASK LIST ACTIVITY facto
  • Groovy/Grails 浮点值和 HTML5 数字输入

    在 Groovy Grails 2 0 中 我有一个带有 Float 变量的域 例如 Float Weight 25 28 当 Grails 生成具有相应数字输入字段的表单时 验证会抱怨 25 28 值 并且只接受 int 值 有人可以阐明
  • 从后端发送Excel文件到前端并在前端下载

    我使用 Exceljs npm 模块在后端 Express JS 创建了一个 Excel 文件 我将其存储在临时目录中 现在我想将文件从后端发送到前端 并在用户单击按钮时将其下载到前端 我对两件事感到震惊 1 如何通过HTTP POST请求
  • django 快速登录系统

    我已经创建了一个 Django Web 应用程序 其中包含一个简单的用户表 用户名 密码 我还设置了一个 iOS 应用程序 swift 并且想知道对登录系统进行编码的最佳方法是什么 根据我从研究中收集到的信息 我将不得不对从现有 djang
  • 更改首选项的高度

    我有一个 PreferenceFragment 子类 我希望其每一项 Preferences 和 SwitchPreferences 的高度为 120dp 怎么做 这是相关代码 public class SettingsFragment e
  • 无法从 pine 编辑器中的函数访问值

    我正在尝试测试 RSI 14 DI 反转策略 但无法从它们所在的函数访问 DI 或 DI 变量为 加 和 减 有关如何访问它们的任何想法 这是代码 version 4 strategy RSI 14 DI DI Reversal Strat
  • 如何设置UISwitch边框颜色?

    我的应用程序有 UIView appearance setTintColor UIColor whiteColor 这就是我所拥有的on and off 我需要做UISwitch边框可见 如 Settings app 中所示 Your UI
  • Homestead 2.0 多个站点,全部链接到同一网址

    大家好 小问题 我已经设置了 Homestead 2 0 一切正常 我想在同一代码目录中添加另一个项目 但将其链接到另一个网址 所以我将其添加到站点列表中 但是当我访问 laravel app 时 一切正常 但是当我访问 larabook
  • 制作 2 个子集向量,以便值在索引方向上不同

    我想从相同的数据中提取 2 个向量的子集 其中replace TRUE 即使两个向量可以包含相同的值 它们在同一索引位置也不能相同 例如 gt set seed 1 gt a lt sample 15 10 replace T gt b l
  • 针对特定产品的颤动增量计数器?

    我正在flutter中做一个包含产品的应用程序 我需要做的是能够增加并获取要存储的增加产品的密钥 目前它们正在增加所有产品 我留下了图片和代码 感谢您的帮助 当按下添加图标时 增加两个计数器的乘积 https i stack imgur c
  • 访问 TWinControl 的受保护事件

    想象一下 您想要分配自己的事件过程 procedure TSuperObject DoSomething Sender TObject Button TMouseButton Shift TShiftState X Y Integer be
  • Zend Framework:如何处理 Ajax 请求中的异常?

    通常 当引发异常时 错误控制器会接受命令并显示带有常规公共页眉和页脚的错误页面 Ajax 请求中不需要这种行为 因为如果发生错误 整个 html 页面都会被发送过来 如果我直接在 div 中加载 http 响应的内容 则这是更不受欢迎的 相
  • 将 AT&T 语法转换为 Intel 语法 (ASM)

    我一直在尝试访问可执行文件的 peb 信息 如下所示 访问 x64 TEB C 和汇编 https stackoverflow com questions 21973330 access x64 teb c assembly noredir
  • TypeError:Google App Engine 的 Python 中存在预期的字符串或缓冲区

    我想使用以下代码显示对象的内容 def get self url https www googleapis com language translate v2 key MY BILLING KEY q hello source en tar
  • java中模拟全局变量的查询

    我有一个问题 我想这对于这里的大多数人来说都是微不足道的 然而 这里是 我有一个连接到数据库以读取特定信息的应用程序 现在 这种读取根据每个请求发生在应用程序中的许多类中 所以我想将每个请求的数据库连接数限制为 1 个 这就是我所做的 假设
  • 根据 Gulp 中的正则表达式重命名文件

    假设我有一个 LESS CSS 目录结构 如下所示 less core main less header less body less footer less contact main less form less details less
  • 关于 R 中 nls 拟合的问题 - 为什么这是一个如此奇怪的拟合?

    我正在尝试对一些简单数据 按年的玉米产量 进行非线性拟合 在 R 中使用 lm 来完成它是很简单的 但是如果允许有一条曲线 一些数据会更适合 大约是year 1 5左右 x lt c 1979L 1980L 1981L 1982L 1983
  • 什么是授权实体?在自己的应用程序中找不到 gcm_defaultSenderId

    我正在尝试让我的应用程序与 Google Cloud Messaging 一起运行 我正在关注 Google Cloud Messaging Quickstart 应用程序 可以在此处找到github https github com go