使用php curl的谷歌电子邮件设置api错误403

时间:2015-04-09 11:56:57

标签: oauth-2.0 google-api google-email-settings-api

我正在尝试通过Google电子邮件设置API更新签名。该域名是EDU帐户,有问题的用户是超级管理员。成功检索OAuth 2.0令牌后,我发出此php curl代码:

$mydomain = '<mydomain.com>';
$myuser = '<myusername>';
$token = '<mytoken>';   
$url = 'https://apps-apis.google.com/a/feeds/emailsettings/2.0/'.$mydomain.'/'.$myuser.'/signature'
$data = '<?xml version="1.0" encoding="utf-8"?>
         <atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">
         <apps:property name="signature" value="blabla" />
         </atom:entry>';

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/atom+xml', 'Authorization: Bearer '.$token));
   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
   $output = curl_exec ($ch); 

   curl_close ($ch); 

结果是:

You are not authorized to access this API. Error 403

由于在获得授权时提及here有关client_id的其他问题,我已尝试使用gserviceaccount.com地址和googleusercontent.com地址进行上述操作,结果相同。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:在与Google代表交谈后,我了解到电子邮件设置api无法通过标准“网络应用”授权使用,但需要通过“服务帐户”使用:

https://developers.google.com/identity/protocols/OAuth2ServiceAccount