联系人API是否仍适用于任何人?前段时间我开始从API获得403错误。我每周运行一次备份脚本。每个用户都无法备份,我每小时重试一次,直到下周。在一周的时间里,我最终会得到几个联系人条目,但不是很多。这使我相信我的代码仍然有效,因为我得到了一些联系人。有人有任何见解吗?
注意:我也使用相同的代码/框架为我的组织备份Google云端硬盘和Google日历,并且没有任何问题。
function retrieveAllUserContacts($user)
{
$nextLink = "https://www.google.com/m8/feeds/contacts/$user/full";
$params = array('xoauth_requestor_id' => $user);
while($nextLink != '')
{
$header = array('GData-Version: 3.0');
$result = sendOAuthRequest('GET', $nextLink, $params, $header);
$params = array('xoauth_requestor_id' => $user);
$nextLink = '';
libxml_use_internal_errors(true);
$xmlObj = simplexml_load_string($result);
if($xmlObj === false)
{
echo "adding $user to retry list. Result : " . print_r($result, true) . "\n";
addUserToRetryList($user);
exit(1);
}
foreach($xmlObj->link as $link)
{
if($link['rel'] == 'next')
{
$nextLink = $link['href'];
}
if($nextLink != '')
{
$urlSplit = explode('?', $nextLink);
$nextLink = $urlSplit[0];
$urlParams = explode('&', $urlSplit[1]);
foreach($urlParams as $urlParam)
{
$urlParamSplit = explode('=', $urlParam);
$params[$urlParamSplit[0]] = $urlParamSplit[1];
}
break;
}
}
foreach($xmlObj->entry as $entry)
{//get contacts
...
}
function sendOAuthRequest($httpMethod, $url, $parameters, $header=array())
{
global $CONSUMER_KEY;
global $CONSUMER_SECRET;
$consumer = new OAuthConsumer($CONSUMER_KEY, $CONSUMER_SECRET, NULL);
$request = OAuthRequest::from_consumer_and_token($consumer, NULL, $httpMethod, $url, $parameters);
// Sign the constructed OAuth request using HMAC-SHA1
$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $consumer, NULL);
// Make signed OAuth request to the Contacts API server
if(count($parameters))
{
if(strpos($url, '?') === false)
{
$url .= '?' . implode_assoc('=', '&', $parameters);
}
else
{
$url .= '&' . implode_assoc('=', '&', $parameters);
}
}
$header[] = $request->to_header();
return send_request($request->get_normalized_http_method(), $url, $header);
}
以下是OAuth类代码:http://pastebin.com/hH4SM9nn我可以说它适用于Google云端硬盘和Google日历API,而且此代码可以使用一年多而且没有问题。
答案 0 :(得分:0)
许多问题可能导致这种情况。由于您的问题不具体,并且没有提供代码示例,因此以下是一些潜在的问题:
GET
请求指定了“默认”用户,其中不总是授予权限最近还存在授权和权限方面的问题,this StackOverflow answer中记录了一个“修复”问题。它不仅要通过this link将Google帐户与该帐户相关联的Gmail地址添加到分析服务中。