我正在尝试使用Google Contacts API和Python/gdata客户端处理程序通过OAUTH 2.0访问域名用户的联系人。我最终想创建一个Web服务以添加用户的联系人,但是第一步是使该测试正常。
我可以访问我自己的联系人如果我使用默认URI,就可以了。但是,当我通过电子邮件地址为另一个用户构建URI时,我似乎无法访问其他用户的联系人。这是我正在使用的代码:
client.GetContacts(uri=client.GetFeedUri(contact_list=userEmail))
我执行此操作时返回403错误。
gdata.client.RequestError: Server responded with: 403
Your client does not have permission to get URL /m8/feeds/contacts/<userEmail>/full from this server.
主要只是试图了解我在这里尝试的事情是否有可能。例如,在电子邮件设置API中,您可以对域进行身份验证并传递用户的电子邮件以列出他们的标签,添加过滤器等。因此,我希望联系人API的工作方式相同,尽管处理略有不同,即修改URI,而不仅仅是向客户处理程序传递论点。请让我知道我是否在那个推定中错了。
为了授权,我使用flow_from_clextecrets获取详细信息,然后获得令牌以授权域的contactsclient。同样,我可以访问自己的联系人,因此授权似乎还可以,但是我无法访问其他用户的联系人。
client = token.authorize(ContactsClient(domain=domain))
似乎我缺少访问其他用户的东西。有人可以在这个驼峰上为我提供帮助吗?这是我检查/确认的一些事情:
- 启用了该项目的联系人API
- 范围已在控制面板中授权客户ID>管理第三方访问
- 我是域中的超级管理员。
感谢您的时间!
我从另一个帖子中找到了答案,并具有出色的细节:
域范围访问Google GDATA API
您需要使用"服务帐户"身份验证。由于某种原因,我认为这只能与较新的基于发现的API一起使用。但是,服务帐户访问也适用于GDATA API。我现在可以访问域中用户的所有联系人。