我正在尝试从我的应用程序对Google Calendar API进行一些Rest-API调用,以显示一些Calendar Data,但我确实很慢,但肯定会感到绝望。
我已经激活了API,创建了凭证并下载了客户端秘密的Json文件。 为了进行测试,我使用Postman向API发送示例请求,例如https://www.googleapis.com/calendar/v3/calendars/ {calendar-ID} / acl
因为在json文件中没有访问令牌,所以我使用了“获取新的访问令牌”,从json输入了所有数据并获得了密钥。但是,如果我使用此密钥发送具有oAuth2授权的请求,并且该示例API调用我得到了401。
我玩了几个小时没有成功。我对这种授权不是很有经验,肯定会在这里遗漏一点。
实际上,我只是想从我的php脚本中获取一些日历,以获取一些日历数据。也许有人可以描述完成此任务的必要步骤。
先谢谢您。 :)
答案 0 :(得分:0)
您从google下载的凭据文件将您的应用程序标识为google。它不能让您直接访问api。
要访问包含私人用户数据的Google api,您需要使用OAuth2进行身份验证,以获得资源所有者的同意才能访问其数据。
这些链接可以帮助您使用从Google开发者控制台获得的客户ID和客户机密来设置邮递员。
答案 1 :(得分:0)
还剩下一个问题。使用访问令牌通过Postman获取数据的过程介于两者之间。还可以使用refresh-token来获取新的acces令牌。 但是在我的Curl中,执行api请求时,我仍然收到401。通过curl刷新访问令牌的效果很好,但是获取数据的实际api调用似乎还没有到位。
$oCurl = curl_init();
curl_setopt($oCurl, CURLOPT_HTTPHEADER, array(
'Authorization' => 'Bearer '.$token,
));
curl_setopt($oCurl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($oCurl, CURLOPT_TIMEOUT, 30);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($oCurl, CURLOPT_URL, $url);
$response = curl_exec($oCurl);
$list = json_decode($response );
所以响应仍然
[code] => 401
[message] => Login Required
也许有人知道这里出了什么问题? :)
€好的,将'Authorization'=>'Bearer'。$ token更改为'Authorization:Bearer'。$ token,成功了。
感谢您的帮助