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

时间:2017-06-06 06:34:53

标签: authentication oauth google-cloud-platform

我正在尝试从嵌入式设备连接到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 ....

我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

  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'
    
  2. 您尚未描述如何生成API密钥,因此我认为这可能是可能出现的问题之一。

  3. 您可以浏览Google的steps for using Google OAuth 2.0,其中包含很多有关客户机密,访问令牌和刷新令牌的信息。

    只要您拥有自己的客户ID和密码,就可以调用Google OAuth API来生成访问令牌。

    您将当前访问令牌作为REST API的key参数传递。

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