Google通讯录API PHP卷曲检索联系人

时间:2016-10-03 15:41:42

标签: php curl google-api google-contacts

我多年来一直在使用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游乐场中使用此请求。

我不想使用图书馆,因为我最终想要做的就是通过电子邮件地址找到用户联系人以获取电话号码。我已经为日历创建了自己的函数库,因此不想添加额外的未使用的东西。它应该只需要几行代码。

我觉得我现在只是盯着它看了很长时间而且错过了显而易见的事情。任何帮助表示赞赏。

更新:

我使用curl_getinfo()

解决了这个问题

阵 (     [url] =&gt; https://www.google.com/m8/feeds/contacts/myemail@gmail.com/full?v=3.0&alt=json     [content_type] =&gt;为text / html;字符集= utf-8的     [http_code] =&gt; 401     [header_size] =&gt; 457     [request_size] =&gt; 208     [filetime] =&gt; -1     [ssl_verify_result] =&gt; 0     [redirect_count] =&gt; 0     [total_time] =&gt; 0.1244     [namelookup_time] =&gt; 0.000837     [connect_time] =&gt; 0.00306     [pretransfer_time] =&gt; 0.015428     [size_upload] =&gt; 0     [size_download] =&gt; 11875     [speed_download] =&gt; 95458     [speed_upload] =&gt; 0     [download_content_length] =&gt; -1     [upload_content_length] =&gt; 0     [starttransfer_time] =&gt; 0.123992     [redirect_time] =&gt; 0     [certinfo] =&gt;排列         (         )

1 个答案:

答案 0 :(得分:2)

看到它是401,我注意到你的授权标题并不完全正确。将授权标题更改为"Authorization: Bearer " . $accessToken而不是"Authorization: OAuth " . $accessToken

如果您仍然获得401,那么您需要获得新的访问令牌。