我正在使用"保存到Android Pay"API,我正在尝试更新我的一个对象。根据谷歌的API。
实现它的一种方法是使用 cURL 命令并按照以下步骤操作:
- 获取令牌
java -jar TokenUtil.jar serviceAccountEmailAddress pathToPrivateKey
- 将特定对象保存到文本文件
curl -X GET https://www.googleapis.com/walletobjects/v1/walletObjectType/resourceId -H "Authorization: Bearer bearerToken" > myobjectfile.txt
- 在文件中进行我希望进行的更改(并将版本值增加 1)
- 将更新的文件推送回服务器。
curl -X PUT https://www.googleapis.com/walletobjects/v1/walletObjectType/resourceId -H "Authorization: Bearer bearerToken" -H "Content-Type: application/json" -d myobjectfile.txt
步骤 1 - 3 工作正常,但是当我尝试将对象推回服务器时,出现以下错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}
由于我在文件中更改的只是版本(也许是某个标题中的一个字符,只是为了查看更改),我不明白为什么我会收到解析错误,因为myobjectfile.txt
来自服务器并且其内部结构不是由我构建的。
他们花了一段时间,但谷歌终于解决了他们的错误并与我分享了他们的解决方案(希望他们也会很快更新他们的 API):
• 该文件应为.json
文件,而不是.txt
文件。
• 在 PUT 命令中的文件名之前应该有一个@
符号:
curl -X PUT https://www.googleapis.com/walletobjects/v1/walletObjectType/resourceId -H "Authorization: Bearer bearerToken" -H "Content-Type: application/json" -d @myobjectfile.json
应用这些更改后,我能够更新我的对象。