我正在尝试从嵌入式设备连接到Google Cloud,因此我无法访问OAuth身份验证。文档显示我可以使用简单的API密钥进行连接。我创建了一个简单的API密钥,但我在使用它时遇到了问题。
我可以在https://developers.google.com/apis-explorer/?hl=en_US#p/pubsub/v1/上成功测试API函数,但在此开发人员的网站上,我没有输入我的API密钥(可能会在后台自动生成一个)。
当我使用curl尝试相同的命令时,我收到401错误: "请求缺少必需的身份验证凭据。预期的OAuth 2访问令牌,登录cookie或其他有效的身份验证凭据。见https://developers.google.com/identity/sign-in/web/devconsole-project。"," status":" UNAUTHENTICATED"
但我直接从在线API测试人员复制GET或POST命令并在最后添加我的密钥: curl -X POST -d' {"策略":{"绑定":[{"角色":"角色/编辑" ;,"会员":[" serviceAccount:电荷...."]}]}}' https://pubsub.googleapis.com/v1/projects/pl..../subscriptions/arriveHomeSub:setIamPolicy?key=AIz ....
我错过了什么?
答案 0 :(得分:1)
由于您提供的信息有限,很难确定根本原因,但这些是可能的原因:
您没有使用curl
的URL参数的引号。这可能导致某些字符成为URL的一部分,以不同的方式由shell解释。像&
这样的字符通常是罪魁祸首,尽管它们似乎不是您粘贴的网址的一部分。
curl -X POST -d '{"policy":{"bindings":[{"role":"roles/editor","members":["serviceAccount:charge...."]}]}}' 'https://pubsub.googleapis.com/v1/projects/pl..../subscriptions/arriveHomeSub:setIamPolicy?key=AIz'
您尚未描述如何生成API密钥,因此我认为这可能是可能出现的问题之一。
您可以浏览Google的steps for using Google OAuth 2.0,其中包含很多有关客户机密,访问令牌和刷新令牌的信息。
只要您拥有自己的客户ID和密码,就可以调用Google OAuth API来生成访问令牌。
您将当前访问令牌作为REST API的key
参数传递。
访问令牌的生命周期非常有限,可能需要定期刷新。如果您的应用程序需要定期刷新访问令牌,请考虑以安全的方式将刷新令牌存储在您的应用程序中。