使用api以管理员身份访问Google Apps Domain用户的个人联系人

时间:2013-11-23 06:54:28

标签: ruby google-api gdata-api google-contacts

我需要使用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&#39;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&#39;s all we know.</ins></p></body></html> --- 
 nil

请帮忙。感谢。

0 个答案:

没有答案