我需要使用api以管理员身份访问Google Apps Domain用户的个人联系人。
在“Google Contacts API 3.0版”中,有如何执行此操作的信息:
检索所有联系人要检索所有用户的联系人,请发送 授权GET请求到以下URL:
https://www.google.com/m8/feeds/contacts/ {userEmail} / full
随着 适当的值代替userEmail。
注意:特殊的userEmail value default可用于引用经过身份验证的用户。
所以我在Cloud Google Console上注册了appliaction 并获得客户端ID和客户端密钥。作为域管理员,我授权申请 安全>高级设置>管理第三方OAuth客户端访问权限。允许:联系人(读/写)https://www.google.com/m8/feeds/
关于ruby的代码:
require 'rubygems'
require 'gdata'
require 'highline/import'
require 'yaml'
require 'oauth2'
client = YAML::load(open('data/client2.yml'))
client_id = client[:client_id]
client_secret = client[:client_secret]
tokens = YAML::load(open('data/tokens2.yml'))
api_client_obj = OAuth2::Client.new(client_id, client_secret, {:site => 'https://www.google.com/',:raise_errors=>true})
api_access_token_obj = OAuth2::AccessToken.new(api_client_obj, tokens[:access])
begin
response=api_access_token_obj.get("https://www.google.com/m8/feeds/contacts/user@mydomain.com/full?v=3")
rescue Exception => e
puts "--- #{e.message} ---"
end
puts response.inspect
我跳过了刷新令牌部分。没有问题。 当我将电子邮件发送到user@mydomain.com时,我会收到有关我个人联系人的有效回复。 当我请求/m8/feeds/profiles/domain/mydomain.com/full?v=3我成功接收域目录联系人。但是,当我使用其他现有的域用户电子邮件时,我有错误:
--- <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Error 403 (Forbidden)!!1</title>
<style
type="text/css">
CUT CUT CUT CUT CUT CUT CUT
</style></head> <body>
<a
href="//www.google.com/" id="g"><img> src="//www.google.com/images/logo_sm_2.gif" alt="Google" width="150"
height="55"></a> <p><b>403.</b> <ins>That's an error.</ins></p>
<p>Your client does not have permission to get URL
<code>/m8/feeds/contacts/user@mydomain.com/full</code> from this server.
<ins>That's all we know.</ins></p></body></html> ---
nil
请帮忙。感谢。