簡體   English   中英

使用Google JavaScript Client Lib的Google Contacts API

[英]Google Contacts API with Google JavaScript Client Lib

我正在嘗試使用Google Contacts API v3

由於OAuth2身份驗證和授權,我開始使用適用於JavaScriptGoogle API客戶端庫 我對API訪問的那部分沒有任何問題。

但在做了auth部分后,我不知道接下來該做什么。 我可以將google-api-javascript-client用於Google Contacts API v3嗎? javascript-client支持的Google API列表中,不顯示聯系人API。 但我可以使用OAuth 2.0 Playground工具完全訪問。

我真的很困惑哪個客戶端最適合使用最新的Google Contacts API。 什么是gdata-javascript-client

要將v3 contacts api與gapi(Google JS客戶端lib)提供的身份驗證令牌一起使用,這個有用,使用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));
});

您遇到的問題是Contacts API v3是一個較舊的API,可與不推薦使用的GData客戶端庫一起使用。 因此,它與較新的Google API JavaScript客戶端不兼容。

現在,您需要加載並使用GData Client庫。 有關GData庫與Google API客戶端之間差異的更多信息,請參閱最近的SO問題: gapi.client.load與google.load

我知道這是一個老問題,但在查看如何從Google帳戶中讀取聯系人信息時會出現此問題。

如果您只需要訪問聯系人以將其導入或顯示電子郵件,電話號碼或其他信息而您無需對其進行修改,則可以使用People API( https://developers.google.com/people) / )。 對於javascript,您可以查看示例選項卡。

我創建了一個要點,這幾乎是來自Google的示例,但添加了requestField參數。

https://gist.github.com/ddbb1977/7a4b408ed17c7249252a

不幸的Google Contacts API無法與新的Javascript客戶端庫配合使用。 它僅適用於GData Client Library。 我嘗試過使用GData客戶端庫,但是很難在文檔的每個關頭都收到不推薦使用庫的警告。

因此,我用了一個復合物,

  1. 使用新的客戶端庫來獲取身份驗證。
  2. 使用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 for JSONP但你也可以使用jquery或vanilla js 如何在沒有JQuery的情況下從Javascript發出JSONP請求?

您需要提供自己的YOURCLIENTID,並定義processContacts函數。

gdata.io.handleScriptLoaded(data)是必要的,因為這是url在回調期間所期望的。

我使用7000的限制,但我認為沒有必要。

如果您不想使用JSONP,您可以將access_token轉發到您的網絡服務器,並在那里處理URL,例如使用cURL或Node.js,只需用json替換json-in-script。

在json-in-script中,瀏覽器很重要,否則瀏覽器就會出現問題。

感謝此頁面上的其他答案,這使我指出了正確的方向。

我希望Google能夠使用新的Javascript客戶端庫支持Contacts API。 我希望其他人能夠在此期間使用這個解決方案。

要使用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));
    }
});

}

在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(數據),您可以看到可以調用的所有標頭。

google contact v3是你這份工作的最好朋友

在這里,您可以找到所有可靠的請求端點https://developers.google.com/google-apps/contacts/v3/

與所有聯系人列表一樣,這是終點https://developers.google.com/google-apps/contacts/v3/#retrieving_all_contacts

獲得身份驗證后,您可以獲取此網址的請求以獲取所有聯系人列表這是python中的示例http://code.google.com/p/gdata-python-client/source/browse/samples/contacts/contacts_example。 PY

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM