通过对 Google 电子邮件设置 API 的 HTTP 请求进行身份验证

Authenticating via HTTP request to Google Email Settings API

一直在尝试通过 ruby 访问 google 电子邮件设置 api。

到目前为止,我可以使用 ruby google api 客户端获取访问令牌,

#<Google::APIClient:0x007f08b89dabf8
 @authorization=
  #<Signet::OAuth2::Client:0x007f08b72b6990
   @access_token=
    "hfiponawbvpuqwbr[igi[qwrjgip[nwq[rbgqwbr[ogn[iwrqjpgjowpqrjpogjqwr",
   @additional_parameters={},....etc

但是,当我尝试使用它来访问电子邮件设置时 api:

GET https://apps-apis.google.com/a/feeds/emailsettings/2.0/mydomain.com/muggins/filter?access_token=<access_token>

我明白了 需要授权

需要授权

错误 401

作为回应。

已遵循此示例(取自 the drive docs 并对驱动器使用完全相同的方法并且有效。 但是没有示例 in the email settings docs 并且相同的方法不起作用(假定它拒绝访问令牌)。

有什么想法吗?感觉我已经很接近了,走到这一步已经是一种真正的皇家痛苦......

好的。由于缺少文档,因此很难解决这个问题。

问题是令牌需要作为 header 传递,并在其前面附加字符串 "Bearer "。

所以,这样的事情(用于身份验证)

url = "https://apps-apis.google.com/a/feeds/emailsettings/2.0/mydomain.com/muggins/"

HTTParty.get(url+"sendas", header: {"Authorization" => "Bearer #{your_token}"})

将 return 用户的 sendas 地址列表。

如果你想post...

url = "https://apps-apis.google.com/a/feeds/emailsettings/2.0/mydomain.com/muggins/" 

result = HTTParty.post(
  url+"sendas", 
  header:{
    "Authorization" => "Bearer #{your_token}", 
    "Content-Type" => "application/atom+xml"
  }
)