我正在研究使用 Google 电子钱包通过网络/jwt 界面存储条形码(用于电子处方,如果重要的话)的可行性。
https://codelabs.developers.google.com/add-to-wallet-web#0
在仔细按照所有说明操作后,包括“创建临时发行人帐户和示例类。”,并将 issuerid 和 classid 插入代码(以及 key.json 文件的正确路径)并添加 createPassAndToken 。 .. 它因“403 权限被拒绝”错误而失败。
对于可能导致此问题的原因,我找不到任何帮助。
一个可能的问题是临时发行者帐户中返回的“Pass Class Id”采用 {$issuer_id}.{guid} 形式,示例 app.js 中的内部代码将 issuer_id 作为请求的一部分,让我相信 class_id 应该只设置 guid,但我已经尝试了两种方法,但没有什么不同。
作为一个小问题,所有指令都假定为 linux 命令行,而我使用的是 windows,但当然正确并不难。
感谢任何帮助。
最佳答案
您走在正确的轨道上。通过以下更改,我通过了这一步:
从“Google 钱包 API 代码实验室工具”中显示的
class_id
(如您所述)中删除issuer_id
。它已经将issuer_id
添加到class_id
,这完全是误导。代码应该是这样的:
const issuerId = process.env.WALLET_ISSUER_ID || '338800....000000001'; const classId = process.env.WALLET_CLASS_ID || '71bba024-a024-a024-a024-a024da8f5771';
用于生成临时发行人帐户的电子邮件地址必须与为服务帐户创建的电子邮件地址相同。在codelab中,就是
wallet-codelab@$PROJECT_ID.iam.gserviceaccount.com
。
关于node.js - Google Wallet API Codelabs 示例权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72253521/