Google api 联系人API死了吗?
联系人API是否仍然适用于任何人?不久前,我开始从API中得到403个错误。我每周运行一次备份脚本。每一个我无法备份的用户,我都会每小时重试一次,直到下周。在这一周的时间里,我最终会有几个联系人条目,但数量不多。这让我相信,我的代码仍然有效,因为我有一些联系人。有人有什么见解吗 注意:我也使用相同的代码/框架为我的组织备份Google Drive和Google日历,没有任何问题Google api 联系人API死了吗?,google-api,google-apps,google-api-php-client,google-contacts-api,Google Api,Google Apps,Google Api Php Client,Google Contacts Api,联系人API是否仍然适用于任何人?不久前,我开始从API中得到403个错误。我每周运行一次备份脚本。每一个我无法备份的用户,我都会每小时重试一次,直到下周。在这一周的时间里,我最终会有几个联系人条目,但数量不多。这让我相信,我的代码仍然有效,因为我有一些联系人。有人有什么见解吗 注意:我也使用相同的代码/框架为我的组织备份Google Drive和Google日历,没有任何问题 function retrieveAllUserContacts($user) { $nextLink = "
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类代码:我可以说它适用于Google Drive和Google Calendar API,而且这段代码已经工作了一年多,没有问题。可能是许多问题造成的。由于您的问题不具体,也没有给出代码示例,下面是一些潜在的问题:
- 您尚未移动到HTTPS而不是HTTP
- 您的
请求指定了一个“默认”用户,但并不总是授予该用户权限GET
- 你是想得到
最近还存在授权和许可问题,其中记录了一个“修复”。它不仅涉及添加一个谷歌帐户,还涉及通过将与该帐户相关联的gmail地址添加到分析服务。我正在使用https。我可以想象,如果我不这样做,它将永远不会起作用。我现在将整理代码。@user1538393它解决了您的问题吗?考虑到并非所有国家都允许外部https流量,即使没有https,它也有可能偶尔工作。没有,自从我在一年多前写了它之后,我就一直在使用https,问题在一两个月前就开始出现了。我已经添加了所有代码。谢谢你看。而且,正如你所看到的,我的代码没有违反你发布的要点。1) 它使用https 2)它使用一个服务帐户来模拟我域中的所有用户3)我以谷歌提供的速度获得联系人,而不增加阈值。我不使用任何约束,除了username@user1538393哦,请原谅。我想你的意思是你修改了你的代码以使用HTTPS。这可能是完全无关的,但gmail在今天早些时候访问联系人时遇到了问题-可能是服务出现了临时问题。谢谢你的回复。我不认为他们有什么关系,因为这个问题至少已经存在了一两个月了。