2012-12-06 20 views
3

stackoverflow'ers! 所以我現在的工作就是圍繞社交網絡工作。我已經登錄facebook,google和twitter。現在我需要檢索用戶頭像。網站是非常動態的,幾乎所有的東西都通過javascript和ajax工作。我有facebook用戶頭像成功。當用戶具有化身時,它會返回化身,當用戶沒有化身時,它會返回Facebook的默認化身。現在我正在研究google-plus和twitter。我發現不錯的網址,我可以從谷歌加上頭像:javascript gets google-plus用戶頭像

https://plus.google.com/s2/photos/profile/{oauth_id}?sz=100 

我在會話中存儲oauth_id,它是可訪問的。 當用戶設置頭像 - 一切正常。問題是,當用戶頭像未設置 - 該鏈接返回404錯誤。 我如何確定在jquery或只是JavaScript,如果該鏈接返回404錯誤或不? 對於一些未來的工作 - 我認爲Twitter也有同樣的問題。 或者你可能會提供一些更好的選擇來實現這一點。

回答

4

另一種方式來做到這一點,是要求plus.me範圍,驗證用戶,然後檢索他們的個人資料,這將有,如果他們有圖像值設置一個化身。我在這裏創建了一個實時演示:http://wheresgus.com/profile.html,它使用Google+公共數據API顯示個人資料檢索。

要爲您的項目進行設置,請轉到Google API控制檯 - https://code.google.com/apis/console/並創建一個啓用了Google+ API的項目。您需要從Google API控制檯的API訪問部分獲取Web應用程序的客戶端ID。

相關的代碼如下:

<html> 
    <head> 
    <script src="https://apis.google.com/js/plusone.js"></script> 
    <script type="text/javascript"> 
    function onSignin(e){ 
     accessToken = e.access_token; 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', "https://www.googleapis.com/plus/v1/people/me/"); 
     xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken); 
     xhr.send(); 

     xhr.onreadystatechange = function(){ 
     if (this.readyState == 4){ 
      var myProfile = JSON.parse(xhr.responseText); 
      alert(myProfile.image.url); 
     } 
     } 
    } 
    </script>  
    </head> 
    <body> 
    <g:plus action="connect" clientid="YOUR CLIENT ID" scope="https://www.googleapis.com/auth/plus.me" callback="onSignin"> 
    </g:plus> 
    </body> 
</html> 

與此代碼創建一個HTML文件,並與您在谷歌API控制檯創建的憑據替換您的客戶端ID。當您點擊登錄按鈕時,客戶端會爲您提供該用戶的URL。

0

如果您使用的是jquery.ajax()或jquery.get()方法(或類似方法),您應該能夠檢查作爲回調一部分返回的jqXHR對象。它有一個「狀態」字段,其中包含HTTP調用的狀態碼。

請參閱部分的jqXHR對象http://api.jquery.com/jQuery.ajax/

+0

如果我把給定的鏈接放在ajax中,它總是返回錯誤。也許是因爲它重定向到實際的.png(如果存在)。所以我仍然堅持這一點。 – Wish

+0

我不明白。你會得到一個404錯誤,意思是「找不到」。如果沒有頭像圖像,則圖像「未找到」。 – Prisoner

+0

http://jsfiddle.net/Ak5cS/起初,我把2個路徑放在img標籤中。一個工作,其他不要。然後當你點擊鏈接時,它將相同的路徑傳遞給ajax,都失敗了。也許我只是做錯了,但是,檢查出來。我發現另一個選項是http://stackoverflow.com/questions/4669111/is-this-a-valid-test-to-check-if-a-url-refers-to-an-image-in-js-jquery – Wish

0

我試圖擺弄上述建議,但發現以下方法適合。我使用jquery獲取圖像url。以下是代碼片段。

function getImageURL(_gplusid) { 
       $.get("https://www.googleapis.com/plus/v1/people/"+_gplusid+"?fields=image"+"&key="+googlepluskey, 
       function (data) { 
        console.log(data); 
       }); 
     } 

P.S:_gplusid是用戶的谷歌加號,googlepluskey是您的谷歌身份驗證密鑰。輸出是一個包含圖像url的json對象。您需要啓用谷歌加API訪問通過谷歌API的控制檯。