Authentication 使用简单API密钥格式化对Google云的HTTPS调用

Authentication 使用简单API密钥格式化对Google云的HTTPS调用,authentication,oauth,google-cloud-platform,Authentication,Oauth,Google Cloud Platform,我正在尝试从嵌入式设备连接到谷歌云,因此我无法访问OAuth身份验证。文档显示我可以使用简单的API键进行连接。我创建了一个简单的API密钥,但在使用它时遇到了问题 我可以在上成功地测试API函数,但在这个开发人员的站点上,我没有输入我的API密钥(可能是在后台自动生成的) 当我使用curl尝试相同的命令时,我得到一个401错误: 请求缺少必需的身份验证凭据。应为OAuth 2访问令牌、登录cookie或其他有效的身份验证凭据。请参阅“,“状态”:“未经身份验证” 但是我直接从online AP

我正在尝试从嵌入式设备连接到谷歌云,因此我无法访问OAuth身份验证。文档显示我可以使用简单的API键进行连接。我创建了一个简单的API密钥,但在使用它时遇到了问题

我可以在上成功地测试API函数,但在这个开发人员的站点上,我没有输入我的API密钥(可能是在后台自动生成的)

当我使用curl尝试相同的命令时,我得到一个401错误: 请求缺少必需的身份验证凭据。应为OAuth 2访问令牌、登录cookie或其他有效的身份验证凭据。请参阅“,“状态”:“未经身份验证”

但是我直接从online API tester复制GET或POST命令,并在末尾添加密钥: curl-X POST-d'{“policy”:{“bindings”:[{“role”:“roles/editor”,“members”:[“servicecomport:charge….]}]}


我错过了什么

由于您提供的信息有限,很难确定根本原因,但以下是一些可能的原因:

  • 您没有在
    curl
    的URL参数中使用引号。这可能导致shell以不同的方式解释URL中的某些字符。像
    &
    这样的字符通常是罪魁祸首,尽管它们似乎不是您粘贴的URL的一部分

    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密钥,因此我认为这可能是一个问题

  • 你可以浏览一下谷歌的网站,它涵盖了很多关于客户机密、访问令牌和刷新令牌的内容

    只要您拥有客户端ID和密码,就可以调用GoogleOAuthAPI来生成访问令牌

    将当前访问令牌作为
    参数传递给RESTAPI


    访问令牌的生存期非常有限,可能需要定期刷新。如果您的应用程序需要定期刷新访问令牌,请考虑以安全的方式将刷新令牌存储在应用程序中。

    我正在从谷歌云API管理器中生成API密钥。文档中说,只要我了解安全性不是很好,我就可以将此密钥用于嵌入式应用程序。但到目前为止,这对我不起作用。我将尝试OAuth 2.0身份验证,但我认为我在如何在我的应用程序中存储私钥(超长代码)方面遇到了问题(我正在Arduino中编程)。我正在为服务帐户尝试OAuth,遇到了另一个错误,但似乎正在取得进展。请看这篇帖子:@MarkPeterson-我也在那里回复过。如果你认为答案有帮助,请接受/投赞成票。