Google Play Android Developer API 401 权限不足

2024-01-03

我在用着Google Play Android 开发者 API https://developers.google.com/android-publisher/index服务器到服务器检查用户订阅的订阅状态,但在成功授权并请求现有订阅后,我收到 401 响应,其中包含以下消息“当前用户没有足够的权限来执行请求的操作”。 参观https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=XXXXXX https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=XXXXXX我可以看到我确实有请求的范围(https://www.googleapis.com/auth/androidpublisher https://www.googleapis.com/auth/androidpublisher)但我每次仍然得到相同的回应。 其他人也有同样的问题吗?

编辑:我已经看到了 Explore API 应用程序的功能,它在请求的查询字符串中添加了密钥,但我没有该值。在控制台中,我创建了一个服务帐户客户端 ID,其中包含客户端 ID、电子邮件地址和私钥,但没有显然 Explore API 使用的 API 密钥。

编辑编号2:我已将服务帐户生成的电子邮件添加到 Google Play 开发者控制台和 Google 钱包控制台,但我仍然无法访问。我正在使用 Nodejs 和谷歌-oauth-jwt https://www.npmjs.org/package/google-oauth-jwt因为google没有提供nodejs的lib。

这是我用来发出请求的代码:

var request = require('google-oauth-jwt').requestWithJWT();

function makeReq() {
    request({
        url: 'https://www.googleapis.com/androidpublisher/v1.1/applications/{packageName}/subscriptions/{subscriptionId}/purchases/{purchaseToken}',
        jwt: {
            // use the email address of the service account, as seen in the API console
            email: '[email protected] /cdn-cgi/l/email-protection',
            // use the PEM file we generated from the downloaded key
            keyFile: 'purchases-test.pem',
            // specify the scopes you wish to access
            scopes: ['https://www.googleapis.com/auth/androidpublisher']
        }
    }, function (err, res, body) {
        if (err) {
            console.log(err);
        } else {
            console.log("BODY IS ------------------------------------------");
            console.log(JSON.parse(body));
        }
    });
}

如果您的应用仅在封闭式 alpha 轨道中发布,您还必须在 Play 管理中心的“设置”->“帐户详细信息”中将服务帐户的电子邮件地址 (client_email) 添加到许可证测试人员中。

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

Google Play Android Developer API 401 权限不足 的相关文章

  • 如何强制 pm2 在特定时间后重新启动?

    我在用PM2让我的 Node js 应用程序保持运行 有什么办法可以拥有PM2每 1 小时重新启动一次我的应用程序 将下面的代码放入pm2 js并开始它pm2 start pm2 js var pm2 require pm2 pm2 con
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 是否可以通过 Google oAuth2 获取电话号码?

    根据 OpenID 规范 应该是可以的http openid net specs openid attribute properties list 1 0 01 html http openid net specs openid attri
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o
  • “gulp”不被识别为内部或外部命令

    我正在尝试使用Gulp http gulpjs com and Node Js https nodejs org en 流式传输我的生产过程中缩小和连接 CSS JS 文件的过程 这是我所做的 我安装了Node Js https nodej
  • 为 Promise 编写循环的正确方法。

    如何正确构造循环以确保满足以下条件承诺电话和被束缚的记录器 log res 通过迭代同步运行 蓝鸟 db getUser email then function res logger log res this is a promise 我尝
  • crypto createHMAC 输出根据 Nodejs 版本而有所不同

    我在升级节点版本时遇到加密模块问题 创建的HMAC取决于节点的版本 您将在下面找到重现该问题的代码片段 如果我将密钥编码为 BASE64 或任何 HMAC 不依赖于 node js 版本 如果我将其编码为二进制 则当我更改 Node js
  • Mongodb 以不区分大小写的方式排序

    我在 Nodejs express 中以 mongodb 作为数据库的一个项目中非常努力地构建 当我使用 sort 获取所有数据时 它以错误的方式返回数据 那么有没有办法按照我的预期得到正确的格式 如下所示 如果我们在数据库中有三个记录 i
  • 401 未经授权的帖子回复

    我一直在使用 Angular 模板制作 Node js 网站 但我无法在 DB Mongo 上创建数据 这是代码 节点路由 var Property mongoose model Property var jwt require expre
  • NodeJs/WS:如何抛出服务器端在客户端处理的错误?

    当我的 websocket 有超过 2 个连接时 我试图在服务器端抛出错误 我有这个不错的客户端onerror方法 但我无法到达我的代码的那部分 我正在使用 nodeJS 和包ws其中有关于错误处理的最小文档 服务器 js theWebSo
  • 角度编译速度慢

    我有一个API in Symfony PHP 我用它来测试postman它就像一个魅力 但当我这样做时ng serve aot optimization应用程序开始构建并且消息compiled successfully 需要一分多钟 当我需
  • 在node.js 0.12.x中使用libuv函数

    我写了一个node js c 插件 在node js 0 10 x下可以成功编译 但是当迁移到0 12 x时 出现了一些错误 例如error C2065 uv work t undeclared identifier 我想知道我是否可以在0
  • 可注入的“PlatformLocation”需要使用JIT编译器进行编译,但“@angular/compiler”不可用

    我的 Angular 应用程序通过 Node 16 13 0 提供服务 更新到 Angular 13 后 我收到以下错误 可注入 class PlatformLocation 的 JIT 编译失败 文件 Users btaylor work
  • 重命名猫鼬中的字段[重复]

    这个问题在这里已经有答案了 我有两个 JSON 对象 每个对象都有一个名字字段 我想将名字重命名为名称 还想使用猫鼬将现有的名字值导入到名称 Schema const mongoose require mongoose const Sche
  • 根据 MVC,哪种项目结构是正确的? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我注意到诸如flask通常有一个名为views容纳 app route def index return render template ind
  • 在express js中禁用http方法

    我正在我的 Express 应用程序上进行 nessus 测试 这是我得到的 基于每种方法的测试 HTTP 方法 ACL CHECKOUT COPY DELETE GET HEAD LOCK MERGE MKACTIVITY MKCOL 移
  • 使用 Javascript/Node.js 在代码内执行 mongoimport

    node js javascript 中是否有任何库可供个人使用mongoimport在代码中 据我了解 mongoimport 有点像 exe 您必须先执行它 然后才能使用其文本输入环境 是否可以在我的代码中执行 mongoimport
  • fs-extra:源和目标不能相同。 (科尔多瓦)

    我在使用 cordova 构建时遇到错误 Error Source and destination must not be the same 构建系统 Ionic ionic cli 4 10 1 ionic framework ionic
  • 如何清除node.js中的超时

    您好 我们正在使用 node js socket io 和 redis 开发应用程序 我们有这个程序 exports processRequest function request result var self this var time

随机推荐

  • 即使库已链接,对符号的未定义引用

    当链接我正在处理的项目时 链接器给出以下错误 usr bin ld Includes and Libs lib libsfml21rca a SoundFile o undefined reference to symbol sf read
  • javafx 和可序列化

    在旧的 AWT 库中 Point类和Color类是可序列化的 JavaFX 中都没有 我想保存一个数组列表Drawable到一个文件 这是界面 import javafx scene canvas GraphicsContext publi
  • mouseover() mouseout() jQuery add/removeClass 问题

    我正在尝试使用 mouseover mouseout addClass 和 removeClass 的组合来创建一个简单的鼠标悬停效果 基本上 当用户将鼠标悬停在某个元素上时 我想应用不同的边框 1px 灰色虚线 初始状态为 1px 纯白色
  • Groovy 可以动态添加或重写 POJO 上的方法吗?

    如果我有 java class MyClass public String getName return hector 和这个类的一个实例 Groovy 可以重写实例上的 getName 方法吗 当然你可以使用动态元类 http groov
  • 创建一个包含开始日期和结束日期之间的日期的列表

    使用 SQL Server 2016 我有一个具有不同开始日期和结束日期的表 Start End 2018 01 01 00 00 2018 01 01 23 59 2018 01 12 05 33 2018 01 13 13 31 201
  • 如何在玩笑中模拟/监视 useState 挂钩?

    我试图监视 useState React hook 但我总是测试失败 这是我的 React 组件 const Counter gt const counter setCounter useState 0 const handleClick
  • 如何从本地maven存储库中删除通过install:install-file添加的jar文件?

    mvn install install file Dfile phonegap 1 1 0 jar DgroupId phonegap DartifactId phonegap Dversion 1 1 0 Dpackaging jar 我
  • System.ArgumentException 路径中存在非法字符

    我在用Path Combine 并且其中一个字符串包含 Unicode 字符 我明白了 System ArgumentException exception illegal characters in path 根据MSDN http ms
  • 转换 UTF8 文本以在 URL 中使用

    我正在开发一个国际网站 它使用 UTF8 显示非英语字符 我还使用包含项目名称的友好 URL 显然我不能在 URL 中使用非英文字符 这种转换有某种常见的做法吗 我不确定应该用哪些英文字符替换它们 有些字符非常明显 例如 到 e 但其他字符
  • Gradle 7.2:如何应用自定义 Gradle SETTINGS 插件?

    我正在将 buildSrc 约定插件迁移到独立插件中 有很多为 Project 对象创建 Gradle 插件的示例 但真正缺乏 Settings 和 Gradle 我想集中我们在 gradle settings kts 文件中使用的存储库列
  • Javascript 中弱引用的查找表

    我有一个树结构 其中动态添加和删除元素 这些元素是从网络动态加载的 我想要实现的是拥有一个查找表 将元素的 id 映射到树中的实际元素 现在 使用简单的映射或对象时的问题是它持有对树元素的强引用 这会在一段时间后使内存膨胀 由于节点 gt
  • 解析 XDocument,无需继续指定默认命名空间

    我有一些 XML 数据 类似于下面的示例 我想读取代码中的值 为什么我必须指定默认命名空间来访问每个元素 我希望所有元素都使用默认名称空间 有更合乎逻辑的方法来实现我的目标吗 XML 示例
  • 共享转换不起作用 recyclerview 到片段

    我正在尝试在我的应用程序中实现共享转换 我想要 RecyclerView 中的 ImageView 将出现在下一个片段中 以共享从 RecyclerView 到片段的转换 但它不起作用 我是这样做的 回收商的物品布局
  • 如何将数据从一个HDFS复制到另一个HDFS?

    我有两个 HDFS 设置 想要将一些表从 HDFS1 复制 而不是迁移或移动 到 HDFS2 如何将数据从一个HDFS复制到另一个HDFS 是否可以通过 Sqoop 或其他命令行 DistCp 分布式复制 是用于在集群之间复制数据的工具 它
  • C# 中的泛型类成员?

    嘿 我想我的想法是错误的 但我不确定什么是最好的 我想要一个带有成员变量的类 该变量可以是任何类型 具体取决于当时的需要 到目前为止 我有这样的事情 public class ConfigSetting
  • 何时在 C# 中使用 SqlConnection.ClearAllPools()

    我注意到我的代码出错了sqlWrite ExecuteNonQuery 在几秒钟内执行 200 个插入查询后 我一直以为using将确保资源得到正确的重用 并且无需执行任何操作 这是我第一次收到此错误 我已经处理 sql c 近 3 年了
  • PHP 和 Java 之间的哈希

    我正在尝试在 PHP 中创建一个哈希值 将其存储在数据库中 然后在 Java 中验证该哈希值 到目前为止 它们都彼此独立地工作得很好 Java 可以散列和验证 java Php 可以散列和验证 php 但尽管我尽了最大努力 但它们并不能很好
  • css 将样式应用于除最后一行之外的所有元素

    我有一个产品类别页面 每行 3 个产品 我希望每一行都有一个边框底部except对于最后一行 这应该没有边框底部 最后一行可能包含 1 2 或 3 li 元素 我当前使用的代码将 border bottom 属性应用于每 3 个 li li
  • 从 AppLoading 中看不到启动屏幕

    import React from react import AppLoading from expo app loading export default function App return
  • Google Play Android Developer API 401 权限不足

    我在用着Google Play Android 开发者 API https developers google com android publisher index服务器到服务器检查用户订阅的订阅状态 但在成功授权并请求现有订阅后 我收到