我试图与合作谷歌联系人API V3 。
由于OAuth2用户认证和授权,我开始使用谷歌API客户端JavaScript库 。 我有一个的API访问的那部分没有问题。
但这样做的权威性部分后,我不知道下一步该怎么做。 我可以使用谷歌的API的JavaScript客户端的谷歌联系人API V3? 在支持谷歌的API由JavaScript客户端列表中的联系人API不会出现。 但是,我有完全访问的OAuth 2.0游乐场工具 。
我真搞不清楚哪个客户端是工作最好最新的谷歌联系人API。 是什么样的GDATA的JavaScript客户端 ?
要使用由GAPI(谷歌JS客户LIB)这个人是有帮助的,所提供的认证令牌使用V3联系人API alt=&json
$.getJSON('https://www.google.com/m8/feeds/contacts/default/full/?access_token=' +
authResult.access_token + "&alt=json&callback=?", function(result){
console.log(JSON.stringify(result));
});
您所遇到的问题是,联系人API v3是一个较旧的API,与过时的作品的GData客户端库 。 因此,这是与新的不兼容谷歌的API JavaScript客户端 。
现在你需要加载并使用的GData客户端库。 有关的GData库和谷歌的API客户端之间的区别的更多信息,请参见本最近的SO问题: gapi.client.load对的google.load
我知道这是一个老问题,但这个问题表明了寻找关于如何阅读从谷歌帐户中的联系人信息时。
如果你只需要访问联系人导入或显示电子邮件,电话号码或其他信息,你不需要修改它,你可以使用人API( https://developers.google.com/people / )。 对于JavaScript您可以检查样品标签。
我创建了一个要点,这几乎是从谷歌的样品,但添加requestField参数。
https://gist.github.com/ddbb1977/7a4b408ed17c7249252a
不幸的谷歌联系人API不与新的JavaScript客户端库工作。 它仅适用于客户端的GData库。 我想工作的GData客户端库,但是当你在每一个关键时刻,该库已被废弃获得文档中警告,这是困难的。
因此,我使用了氢化物,
- 使用新客户端库,以获得认证。
- 使用URL来获取联系人
不幸的是,由于跨域限制,你需要使用JSONP,否则浏览器失败。
<script src="https://apis.google.com/js/client.js"></script>
.....
function contactsInit() {
var clientId = 'YOURCLIENTID.apps.googleusercontent.com';
var scopes = 'https://www.google.com/m8/feeds';
gapi.auth.authorize({
client_id: clientId, scope: scopes, immediate: false},
handleAuthResult);
function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
var url =
"https://www.google.com/m8/feeds/contacts/default/" +
"full?alt=json-in-script&access_token=" +
authResult.access_token +
"&max-results=7000&v=3.0";
var myJSONP = new Request.JSONP({
url: url,
callbackKey: 'jsoncallback',
data: {
},
onRequest: function(url){
// a script tag is created with a src equal to url
},
onComplete: function(data){
// the request was completed.
}
}).send();
}
}
}
function Skeleton() {}
if (!gdata) {
var gdata = new Skeleton();
gdata.io = new Skeleton();
gdata.io.handleScriptLoaded = function(data) {
processContacts(data);
}
}
注:我使用MooTools的为JSONP,但你也可以使用与jQuery或香草JS 如何从Javascript使JSONP请求不JQuery的?
您需要提供自己的YOURCLIENTID,并定义processContacts功能。
该gdata.io.handleScriptLoaded(数据)是必要的,因为这是什么网址回调过程中的期望。
我使用的7000的限制,但我不认为这是必要的。
如果你不希望使用JSONP您可以在使用的access_token卷曲或用Node.js的转发到你的网络服务器,并处理URL出现,如只是使用JSON代替JSON-的脚本。
在JSON-的脚本是在浏览器很重要,因为否则浏览器嘎嘎叫着。
由于此页面上的其他答案,那我指出了正确的方向。
我希望谷歌将使联系人API能够与新的JavaScript客户端库。 我希望其他人将其他能够在此期间,使用该解决方案。
为了获取使用谷歌,加上使用联系人列表: -
<script src="https://apis.google.com/js/client.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
function auth() {
var config = {
'client_id': 'OAUTH_CLIENT_ID',
'scope': 'https://www.google.com/m8/feeds'
};
gapi.auth.authorize(config, function() {
fetch(gapi.auth.getToken());
});
}
function fetch(token) {
$.ajax({
url: "https://www.google.com/m8/feeds/contacts/default/full?access_token=" + token.access_token + "&alt=json",
dataType: "jsonp",
success:function(data) {
console.log(JSON.stringify(data));
}
});
}
在HTML身材: -
<button onclick="auth();">GET CONTACTS FEED</button>
输出将具有与含有的电话号码的联系的字段。
确保获得来自谷歌开发者控制台的客户ID正确重定向URI。
这是我们发现的工作就是让个人数据:
var data = (JSON.stringify(data.feed.entry[0].gd$email, null, 4));
console.log(data);
如果运行JSON.stringify(数据),你可以看到所有你可以调用的头。
谷歌接触v3是这份工作你最好的朋友
在这里你可以找到所有更多钞票请求端点https://developers.google.com/google-apps/contacts/v3/
像所有的联系人名单,这是终点https://developers.google.com/google-apps/contacts/v3/#retrieving_all_contacts
获取认证后,你可以做得到请求URL以便让所有的联系人列表,这是在Python的例子http://code.google.com/p/gdata-python-client/source/browse/samples/contacts/contacts_example。 PY