使用API密钥调用Google Datastore REST API时遇401未授权错误
解决Google Datastore beginTransaction接口401未授权错误
你碰到的这个401错误其实原因很明确:Google Datastore的beginTransaction接口不支持用API Key做身份验证。API Key一般只适用于那些公开可读、不需要用户权限的API操作,而像启动事务这种涉及数据修改、需要验证项目权限的操作,必须用OAuth 2.0访问令牌才行。
下面是具体的解决步骤:
- 先获取OAuth 2.0访问令牌
你有几种简单的获取方式:- 用Google Cloud SDK的命令直接生成:
gcloud auth print-access-token,执行后就能拿到当前登录账号的有效访问令牌 - 如果是在代码里集成,建议用Google官方的客户端库(比如Python的
google-auth、Java的Google Cloud Client Library),它们会自动帮你处理令牌的获取和刷新,不用手动管理
- 用Google Cloud SDK的命令直接生成:
- 修改请求的验证方式
把原来URL里的key={my_api_key}参数删掉,换成在HTTP请求头里添加授权信息:Authorization: Bearer {你的访问令牌} - 检查账号权限
别忘了确认你用来获取令牌的Google账号,在Google Cloud控制台的IAM页面里拥有Datastore的相关权限(比如datastore.databases.beginTransaction权限,通常给个「Datastore User」角色就能满足需求)
给你举个curl请求的示例,方便你参考:
curl -X POST \ https://datastore.googleapis.com/v1/projects/{my_project_id}:beginTransaction \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{}'
总结一下:API Key不是万能的,对于需要操作数据、验证身份的Datastore接口,OAuth 2.0令牌才是正确的验证方式。
内容的提问来源于stack exchange,提问作者Håkan Johansson
相关产品推荐
相关产品推荐

