Lua 谷歌承载令牌:哪一个是正确的?

Lua 谷歌承载令牌:哪一个是正确的?,lua,google-cloud-storage,Lua,Google Cloud Storage,我是Google云存储的新手,我正试图通过GET方法构建一个HTTP请求。我想访问云存储中的一个页面,但我需要一个授权密钥,比如:httpRequest:write(“authorization:Bearer~~token here~~”)。但我不知道该用什么代币。我在Lua中这样做,如果它是相关的,唯一的问题是身份验证,因为当我尝试访问公共对象时,我没有任何问题 提前感谢。谷歌云使用OAuth 2进行身份验证。您的请求将以某种凭证(私钥、Google帐户密码、刷新令牌)开始,并以“访问令牌”结

我是Google云存储的新手,我正试图通过GET方法构建一个HTTP请求。我想访问云存储中的一个页面,但我需要一个授权密钥,比如:httpRequest:write(“authorization:Bearer~~token here~~”)。但我不知道该用什么代币。我在Lua中这样做,如果它是相关的,唯一的问题是身份验证,因为当我尝试访问公共对象时,我没有任何问题


提前感谢。

谷歌云使用OAuth 2进行身份验证。您的请求将以某种凭证(私钥、Google帐户密码、刷新令牌)开始,并以“访问令牌”结束,该令牌将位于授权标头的该位置。有多种不同的方法基于您要验证为哪种类型的实体。例如,独立应用程序通常有一个与服务帐户关联的私钥,并使用该私钥对访问令牌的请求进行签名。如果您正在编写一个使用某些用户的Google凭据运行的应用程序,那么会有一个复杂的三方OAuth握手,最后您会收到一个访问令牌

假设您正在编写一个独立的应用程序,它将使用一个服务帐户。创建服务帐户时,您将获得一个私钥。您将构造一个“JWT声明集”,描述您想要的访问范围。下面是一个例子:

{
  "iss":"761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com",
  "scope":"https://www.googleapis.com/auth/devstorage.readonly",
  "aud":"https://www.googleapis.com/oauth2/v4/token",
  "exp":1328554385,
  "iat":1328550785
}
然后,您将使用私钥对其进行签名,并将其提交给Google的OAuth2服务,响应将包含一个访问令牌。下面是一个示例响应:

{
  "access_token" : "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M",
  "token_type" : "Bearer",
  "expires_in" : 3600
}
现在,当您为下一个小时发出请求时,您将包括一个
授权:承载1/8XBJQAOZZZBHLL5EOTU1PXZ3FMMETKX9W8CV4T79M

这整件事相当复杂,这就是为什么大多数语言中都有助手库的原因(尽管我所知道的不是Lua)。此外,如果您的程序在GCE中运行,您可以利用应用程序默认凭据,这将有助于简化问题


整个过程记录在此处:。我描述的流程是针对“服务帐户”的。另一个选项是获取刷新令牌

老实说,我不认为这是一个Lua问题,因为它几乎可以应用于任何地方。我应该使用我的Lua库来完成这项工作,它应该在我的新API中,我很快就会创建它。我想知道是否可以构建一个纯HTTP请求字符串,并使用访问令牌从中获得响应。下面是一个示例:httpRequest:write(“GET/myPage.html HTTP/1.0\r\n”)httpRequest:write(“host:myBucket.storage.googleapis.com\r\n”)local response=httpClient:GET(httpRequest)这是一个简单的页面请求,但我想知道我是否可以对访问令牌执行类似的操作,并且响应变量将拥有它。是的,您可以。GoogleOAuth2进程是一个RESTfulHTTP进程。你当然可以直接调用它。我觉得我现在走对了。不过我会做更多的研究。谢谢你的帮助!