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

时间:2015-10-30 18:43:02

标签: oauth-2.0 google-api google-admin-sdk

一直试图通过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并且相同的方法不起作用(它假定拒绝访问令牌)。

有什么想法吗?感觉就像我如此亲密,而这一点远远落后于背后的正确的皇家痛苦......

1 个答案:

答案 0 :(得分:0)

行。由于缺乏文档,因此需要付出很大的努力来解决这个问题。

问题是令牌需要作为标头传递并且具有字符串&#34; Bearer&#34;附在它之前。

所以,这样的东西(用于身份验证)

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

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

将返回用户的sendas地址列表。

如果你想张贴......

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"
  }
)