Google联系人API与Google JavaScript客户端库
我试着和你一起工作 由于OAuth2身份验证和授权,我开始使用。 我对API访问的这一部分没有任何问题 但是在完成了auth部分后,我不知道下一步该做什么。我可以使用Google Contacts API v3的吗?在中,联系人API不会出现。但我可以完全访问Google联系人API与Google JavaScript客户端库,javascript,google-api,google-contacts-api,google-api-js-client,Javascript,Google Api,Google Contacts Api,Google Api Js Client,我试着和你一起工作 由于OAuth2身份验证和授权,我开始使用。 我对API访问的这一部分没有任何问题 但是在完成了auth部分后,我不知道下一步该做什么。我可以使用Google Contacts API v3的吗?在中,联系人API不会出现。但我可以完全访问 我真的很困惑哪个客户端最适合使用最新的GoogleContactsAPI。谷歌联系人v3是你这份工作最好的朋友 在这里,您可以找到所有可能的请求端点 与所有联系人列表一样,这是结束点 获取身份验证后,您可以对该url执行get请求以获
我真的很困惑哪个客户端最适合使用最新的GoogleContactsAPI。谷歌联系人v3是你这份工作最好的朋友 在这里,您可以找到所有可能的请求端点 与所有联系人列表一样,这是结束点 获取身份验证后,您可以对该url执行get请求以获取所有联系人列表
这是python中的一个示例。您遇到的问题是,Contacts API v3是一个旧API,可以与不推荐的API一起使用。因此,它与较新版本不兼容
现在,您需要加载并使用GData客户端库。有关GData库和Google api客户端之间差异的更多信息,请参阅最近的SO问题:要使用带有gapi(Google JS客户端库)提供的身份验证令牌的v3 contacts 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));
});
不幸的是,GoogleContactsAPI不能与新的Javascript客户端库一起使用。它仅适用于GData客户端库。我尝试使用GData客户机库,但这很困难,因为文档中每次都会出现警告,指出该库已被弃用 所以我用了氢化物
<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);
}
}
.....
函数contactsInit(){
var clientId='YOURCLIENTID.apps.googleusercontent.com';
var作用域https://www.google.com/m8/feeds';
gapi.auth.authorize({
client_id:clientId,作用域:scopes,immediate:false},
手工(结果);
函数handleAuthResult(authResult){
if(authResult&!authResult.error){
变量url=
"https://www.google.com/m8/feeds/contacts/default/" +
“脚本中的full?alt=json&access_token=“+
authResult.access_令牌+
“&max results=7000&v=3.0”;
var myJSONP=newrequest.JSONP({
url:url,
callbackKey:'jsoncallback',
数据:{
},
onRequest:函数(url){
//创建脚本标记时,src等于url
},
onComplete:函数(数据){
//请求已完成。
}
}).send();
}
}
}
函数骨架(){}
如果(!gdata){
var gdata=新骨架();
gdata.io=新骨架();
gdata.io.handleScriptLoaded=函数(数据){
处理联系人(数据);
}
}
注:
我在JSONP中使用Mootools,但您也可以在JSONP中使用jquery或vanilla js
您需要提供自己的YOURCLIENTID,并定义processContacts函数
gdata.io.handleScriptLoaded(数据)是必需的,因为这是url在回调期间所期望的
我使用7000的上限,但我认为没有必要
如果您不想使用JSONP,您可以将access_令牌转发到您的Web服务器,并在那里处理URL,例如使用cURL或Node.js,只需将脚本中的json替换为json即可
在json中,脚本在浏览器上很重要,否则浏览器会发出嘎嘎声
多亏了这一页上的其他答案,这为我指明了正确的方向
我希望Google能够使Contacts API能够与新的Javascript客户端库配合使用。我希望其他人也能同时使用此解决方案。要使用Google plus获取联系人列表,请使用以下方法:-
<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));
}
});
函数auth(){
变量配置={
“客户端id”:“OAUTH\u客户端id”,
'范围':'https://www.google.com/m8/feeds'
};
gapi.auth.authorize(配置,函数(){
fetch(gapi.auth.getToken());
});
}
函数获取(令牌){
$.ajax({
url:“https://www.google.com/m8/feeds/contacts/default/full?access_token=“+token.access_token+”&alt=json”,
数据类型:“jsonp”,
成功:功能(数据){
log(JSON.stringify(data));
}
});
}
在HTML正文中:-
<button onclick="auth();">GET CONTACTS FEED</button>
获取联系人提要
输出将作为包含电话号码的联系人字段
确保使用正确的重定向uri从google开发者控制台获取客户端id。这就是我们发现的获取单个数据的方法:
var data = (JSON.stringify(data.feed.entry[0].gd$email, null, 4));
console.log(data);
如果您运行JSON.stringify(data),您可以看到您可以调用的所有标题。我知道这是一个老问题,但在查看如何从Google帐户读取联系人信息时,会出现这个问题 如果只需访问联系人即可导入或显示电子邮件、电话号码或其他信息,而无需修改,则可以使用People API()。对于javascript,您可以查看示例选项卡 我创建了一个gist,它几乎是来自Google的示例,但是添加了requestField参数
感谢您的澄清!我正在尝试使用GData客户端库。遗憾的是,身份验证不起作用。我认为这是一个普遍的问题,因为它也不起作用。。希望这是暂时的问题。有更新吗?这似乎问题仍然存在,我无法使用(或者可能我不知道),谷歌联系人api v3。有人找到解决方案了吗?注意:这受到跨源策略的限制,所以javascript客户端库无法做到这一点?load('contacts','v3',function(){});例如?太棒了,这节省了我的时间。我遇到了同样的问题,我首先检索了一个访问令牌,然后