我有一些代码可用于将Gmail联系人的电子邮件地址提取到文本文件中.这是一个简单的Python脚本,可在cron作业中运行,基于Python gdata library(当前为v2.0.18).
{'status': 401, 'body': '<?xml version="1.0" encoding="UTF-8"?>
GData
required
Authorization
Login Required
', 'reason': 'Unauthorized'}
我知道这即将到来,并在其他地方(例如AppEngine应用程序)进行处理,但是忘记了我必须转换此脚本.现在我在这里,我发现我不知道该如何进行这项工作.
我找到的所有参考,例如Google Apps Developer博客上的here或StackOverflow上的here和here,都建议解决方案是使用OAuth2Token.但是,这需要Google API控制台提供的客户端ID和客户端密码(与应用程序绑定).我没有申请.我只想从我的脚本进行身份验证.
有人可以建议在独立脚本中执行此操作的正确方法吗?还是我不走运,没有其他机制可以完成此任务?
这是现有联系人代码的勇气:
from gdata.contacts.service import ContactsService, ContactsQuery
user = "myuser@gmail.com"
password = "mypassword"
addresses = set()
client = ContactsService(additional_headers={"GData-Version":"2"})
client.ssl = True
client.ClientLogin(user, password)
groups = client.GetGroupsFeed()
for group in groups.entry:
if group.content.text == "System Group: My Contacts":
query = ContactsQuery()
query.max_results = 9999 # large enough that we'll get "everything"
query.group = group.id.text
contacts = client.GetContactsFeed(query.ToUri())
for contact in contacts.entry:
for email in contact.email:
addresses.add(email.address.lower())
break
return addresses
理想情况下,我正在寻找将client.ClientLogin()替换为使用gdata保留其余代码的其他机制.或者,如果使用gdata不能真正做到这一点,我愿意转换为其他提供类似功能的库.