不幸的谷歌联系人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与How to make a JSONP request from Javascript without JQuery?
您需要提供自己的YOURCLIENTID,并定义processContacts功能。
的gdata.io.handleScriptLoaded(数据)是必要的,因为这是什么网址回调过程中的期望。
我使用7000的限制,但我不认为这是必要的。
如果你不想使用JSONP您可以在转发的access_token到Web服务器,并处理URL存在,例如与cURL或与Node.js只是用json替换json-in-script。
在浏览器中,json-in-script在浏览器中非常重要,否则浏览器会发出哗哗声。
感谢这个页面上的其他答案,这指出我在正确的方向。
我希望Google能够使用新的Javascript客户端库使联系人API有效。我希望其他人能够在此期间使用此解决方案。
来源
2015-02-04 12:40:24
MLU
对此有何更新?这似乎仍然存在问题,我无法使用(或可能是我不知道),谷歌联系人API v3。有没有人找到解决方案呢? –