我已经使用Google Calendar API好几年了,并且非常成功。我使用curl从php请求。
我一直在尝试与联系人api实现相同的功能。目前,我想做的就是检索联系人列表作为json的用户,我已经检索了一个令牌通过OAuth2。我使用下面的简单代码进行测试。
$accessToken = "thebiglongaccesstoken1234";
$userMail = "useremail@somewhere.com";
$requestURL ="https://www.google.com/m8/feeds/contacts/".$userMail."/full?v=3.0&alt=json";
$headers = array("Authorization: OAuth ".$accessToken);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $requestURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$responseArray = json_decode($response, TRUE);
var_dump($responseArray);
print '<br/>Response: <pre>' . print_r($responseArray, true) . '</pre>';
print 'curl Error: <pre>' . print_r(curl_error($ch), true) . '</pre>';
浏览器中的响应是:
NULL回应:旋度错误:
我可以让这个请求在google OAuth 2.0 playground中工作。
我不想使用库,因为我最终想做的就是通过电子邮件地址找到用户的联系方式以获得电话号码。我已经为日历创建了自己的函数库,所以不想添加额外的未使用的东西。它应该只需要几行代码。
我想我只是盯着它看太久了,错过了显而易见的东西。谢谢你的帮助。
更新:使用curl_getinfo()
数组([url] => https://www.google.com/m8/feeds/contacts/myemail@gmail.com/full?v=3.0&alt=json[content_type] => text/html;utf - 8字符集=[http_code] => 401[header_size] => 457[requestrongize] => 208[filetime] => -1[ssl_verify_result] => 0[redirect_count] => 0[total_time] => 0.1244[namelookup_time] => 0.000837[connect_time] => 0.00306[pretransfer_time] => 0.015428[size_upload] => 0[size_download] => 11875[speed_download] => 95458[speed_upload] => 0[download_content_length] => -1[upload_content_length] => 0[starttransfer_time] => 0.123992[redirect_time] => 0[certinfo] =>数组()
)
看到它是401,我注意到您的授权头不太正确。将您的授权头更改为"Authorization: Bearer " . $accessToken
而不是"Authorization: OAuth " . $accessToken
。
如果你仍然得到一个401,那么你需要得到一个新的访问令牌