2011-05-12 150 views
10

我已經能夠通過遵循API檢索除聯繫人照片之外的所有內容。Google API:獲取聯繫人照片

我可以從返回的XML中獲取img url以及gd:etag。以下是Google API的示例,它與我得到的是同樣的東西,當然對於我的聯繫人來說屬性的值有所不同。

<link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' 
    href='https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de' 
    gd:etag='"KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc."'> 

問題是我不知道如何讓它顯示。當我嘗試它時,我只是得到了url的最後部分(即:「/ 32432eewqdweq」)並且沒有圖像。

我正在使用rails,這是我做網頁開發的第二週,對不起,如果我看起來不太好看啊哈。

任何幫助,將不勝感激!

感謝,

戈蘭

回答

20

您將需要做出的URL的請求,也包括作爲的access_token查詢參數。

因此,使用你的例子,讓我們說,如果你的access_token是ABCDEF123456ABCDEF,那麼你想GET請求是:

https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de?access_token=ABCDEF123456ABCDEF

+0

+1 @Savil非常感謝你。我嘗試在標題中使用oauth2不記名標記,但這對我不起作用。你搖滾。我一定花了3個小時在這一個上打破了我的頭。 – 2014-09-21 18:06:26

+0

上帝謝謝你。 Google API有可怕的文檔。 – 2016-04-20 07:25:12

1

首先,您需要一個授權GET到那個網址,即在授權標題你必須把「OAuth」+ AccessToken。此外,我還沒有嘗試過,但是,正如Savil所說的,將Access Token作爲查詢參數,您也可以實現相同。

無論如何,Google會以的字節迴應您的圖片的字節,因此您無法按原樣顯示。您將需要保存的字節數組到一個文件在您的服務器(我不認爲這是一個很好的解決方案),或者找到另一種方式來顯示照片

如果您想了解更多關於它,here是谷歌的有關聯繫人的照片文件

這是一個相當古老的問題,但無論如何,我希望這可以幫助

+0

我可以將字節轉換爲base64並顯示爲圖像? – Satyadev 2016-12-31 20:50:36

0

使用用於檢索聯繫人和剛剛更換網址的鏈接相對URL相同的授權請求代碼聯繫人圖片。響應將是圖像的字節。使用以下代碼作爲響應返回圖像。

 //'in' is the inputStream returning from the call, response is the HttpServletResponse 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     byte[] buffer = new byte[4096]; 
     int read; 
     while (true) { 
      if ((read = in.read(buffer)) != -1) { 
       out.write(buffer, 0, read); 
      } else { 
       break; 
      } 
     } 
     response.setContentType("image/jpeg"); 
     response.setContentLength(buffer.length); 
     request.getSession().setAttribute("image", new String(out.toByteArray())); 
     response.getOutputStream().write(buffer); 
+0

這是java。如何在JavaScript中實現相同? – Satyadev 2017-01-05 04:35:29

3

只是一個小提示,根據谷歌的API文檔:

注意:如果聯繫人沒有照片,然後將照片鏈接元素 沒有GD:ETAG屬性。

更多信息here