残念ながら、Google Contacts 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);
}
}
注: JSONP には Mootools を使用しますが、 JQuery を使用せずに Javascript から JSONP 要求を作成する方法で jquery またはバニラ js を使用することもできます。
独自の YOURCLIENTID を指定し、processContacts 関数を定義する必要があります。
gdata.io.handleScriptLoaded(data) は、コールバック中に URL が期待するものであるため、必要です。
私は 7000 の制限を使用していますが、必要ではないと思います。
JSONP を使用したくない場合は、access_token を Web サーバーに転送し、そこで URL を処理できます。たとえば、cURL または Node.js を使用して、json-in-script を json に置き換えるだけです。
In json-in-script はブラウザで重要です。そうしないと、ブラウザが鳴きます。
このページの他の回答のおかげで、正しい方向に向けられました。
Google が Contacts API を新しい Javascript クライアント ライブラリで使用できるようにしてくれることを願っています。それまでの間、他の人がこのソリューションを使用できることを願っています。