gpt4 book ai didi

google-contacts-api - Google Contacts API v3 突然只检索到 1.500 个联系人

转载 作者:行者123 更新时间:2023-12-04 15:28:13 28 4
gpt4 key购买 nike

我已经使用这个 API 6 年了,没有任何问题,但是从 3 天前开始,我遇到了一系列奇怪的行为,意识到我的 google 联系人开始不受控制地复制。我发现它与检索联系人时 1.500 的奇怪限制有关,即使我在 GET 查询中使用最大结果也是如此。

这是我的代码(PHP 服务器):

$req = new Google_Http_Request("https://www.google.com/m8/feeds/contacts/".$user_email."/full?max-results=1000000");
$req->setRequestHeaders(array('GData-Version'=> '3.0','content-type'=>'application/atom+xml; charset=UTF-8; type=feed'));
$auth = $client->getAuth();
$val = $auth->authenticatedRequest($req);
$response = $val->getResponseBody();
$xml = simplexml_load_string($response);

结果是 $xml->entry 只有 1.500 个元素,即使联系人是 8.000。

有人知道发生了什么吗?

最佳答案

我联系了我正在使用的联系人同步脚本的作者,似乎还有另一种方法可行 - 这是当前修订版的链接,以及 Adler 先生最近提交的内容似乎解决了这个问题。请记住,这是 python,但我想可以使用 PHP 完成类似的检查? https://github.com/michael-adler/sync-google-contacts https://github.com/michael-adler/sync-google-contacts/commit/4c5a8517e9da84d59769d8b513f5b637782aea14

MAX_RESULTS 是之前设置的变量,10000,但也可能是 1500 或更少,因为这是我们得到的最大值。

    query = gdc.ContactsQuery(max_results=MAX_RESULTS)
feed = self.gd_client.GetContacts(q=query)
while feed:

然后,检查更多联系人:

        next_link = feed.GetNextLink()
if next_link:
feed = self.gd_client.GetContacts(uri=next_link.href)
else:
feed = None

如果您在 oauth2 playground 中查看返回的 xml/json,您会看到响应包含一些您现在需要利用的有用数据来完成这项工作。

例如,如果您发送(授权)请求 https://www.google.com/m8/feeds/contacts/default/full?max_results=10

响应包含

<openSearch:totalResults>1234</openSearch:totalResults>

这包含您的联系人数量。

还有一堆返回的url链接。

我们需要的那个,如果存在,表示有更多可用的联系人,由

标识

rel='下一步'

例子:

 <link href='https://www.google.com/m8/feeds/contacts/username%40gmail.com/full?max-results=10' rel='self' type='application/atom+xml'/>
<link href='https://www.google.com/m8/feeds/contacts/username%40gmail.com/full?start-index=11&amp;max-results=10' rel='next' type='application/atom+xml'/>

start-index 是联系人总数,所以如果你将 max_results 设置为 1000,并且你有 3500 个联系人,你将需要发送你的初始请求,然后从响应中提取每个联系人的“下一个”url需要后续(在本例中为 3 个)请求,附加后续数据,以将所有联系人添加到您的数组中。

您的初始查询可能是

https://www.google.com/m8/feeds/contacts/username%40gmail.com/full?&max_results=1000

您的后续请求将以

结束
https://www.google.com/m8/feeds/contacts/username%40gmail.com/full?start-index=1001&max_results=1000
https://www.google.com/m8/feeds/contacts/username%40gmail.com/full?start-index=2001&max_results=1000
https://www.google.com/m8/feeds/contacts/username%40gmail.com/full?start-index=3001&max_results=1000 (would not return XML containing a link with rel='next' as this is the last page)

关于google-contacts-api - Google Contacts API v3 突然只检索到 1.500 个联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61833268/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com