Google api 联系人API死了吗?

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 = "

联系人API是否仍然适用于任何人?不久前,我开始从API中得到403个错误。我每周运行一次备份脚本。每一个我无法备份的用户,我都会每小时重试一次,直到下周。在这一周的时间里,我最终会有几个联系人条目,但数量不多。这让我相信,我的代码仍然有效,因为我有一些联系人。有人有什么见解吗

注意:我也使用相同的代码/框架为我的组织备份Google Drive和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类代码:我可以说它适用于Google Drive和Google Calendar API,而且这段代码已经工作了一年多,没有问题。

可能是许多问题造成的。由于您的问题不具体,也没有给出代码示例,下面是一些潜在的问题:

  • 您尚未移动到HTTPS而不是HTTP
  • 您的
    GET
    请求指定了一个“默认”用户,但并不总是授予该用户权限
  • 你是想得到

最近还存在授权和许可问题,其中记录了一个“修复”。它不仅涉及添加一个谷歌帐户,还涉及通过将与该帐户相关联的gmail地址添加到分析服务。

我正在使用https。我可以想象,如果我不这样做,它将永远不会起作用。我现在将整理代码。@user1538393它解决了您的问题吗?考虑到并非所有国家都允许外部https流量,即使没有https,它也有可能偶尔工作。没有,自从我在一年多前写了它之后,我就一直在使用https,问题在一两个月前就开始出现了。我已经添加了所有代码。谢谢你看。而且,正如你所看到的,我的代码没有违反你发布的要点。1) 它使用https 2)它使用一个服务帐户来模拟我域中的所有用户3)我以谷歌提供的速度获得联系人,而不增加阈值。我不使用任何约束,除了username@user1538393哦,请原谅。我想你的意思是你修改了你的代码以使用HTTPS。这可能是完全无关的,但gmail在今天早些时候访问联系人时遇到了问题-可能是服务出现了临时问题。谢谢你的回复。我不认为他们有什么关系,因为这个问题至少已经存在了一两个月了。