2014-10-17 55 views
2

任何人都可以提供一個例子如何從Facebook檢索個人資料圖片網址? 不知怎的,我不能這樣做。我可以檢索名字,姓氏,電子郵件,性別,它應該允許檢索個人資料圖片,但它不會。索賠列表中沒有圖片。 我找不到任何例子。這裏是我的代碼:問題與外部auth數據檢索使用owin

Startup.Auth.cs

var x = new FacebookAuthenticationOptions(); 
x.Scope.Add("email"); 
//x.Scope.Add("picture"); 
x.AppId = "*"; 
x.AppSecret = "***"; 
x.Provider = new FacebookAuthenticationProvider() 
{ 
    OnAuthenticated = async context => 
    { 
      context.Identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken", context.AccessToken)); 
      foreach(var claim in context.User) 
      { 
       var claimType = string.Format("urn:facebook:{0}", claim.Key); 
       string claimValue = claim.Value.ToString(); 
       if(!context.Identity.HasClaim(claimType, claimValue)) 
        context.Identity.AddClaim(new System.Security.Claims.Claim(claimType, claimValue, "XmlSchemaString", "Facebook")); 
      } 
    } 
}; 

x.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie; 
app.UseFacebookAuthentication(x); 

代碼,我如何獲取一些數據:

var loginInfo = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie); 
var firstNameClaim = loginInfo.Claims.First(c => c.Type == "urn:facebook:first_name"); 
var lastNameClaim = loginInfo.Claims.First(c => c.Type == "urn:facebook:last_name"); 
var gender = loginInfo.Claims.First(c => c.Type == "urn:facebook:gender"); 

任何想法?我用.NET的.NET SDK實現了需要的結果,但是我很好奇,如何在不使用Facebook SDK for .NET的情況下實現相同的結果。希望社區將幫助這一個。

回答

1

似乎你不能將圖片url作爲帶參數的對象,因爲每次用戶更改他的個人資料圖片時圖片URL都會更改,因此存儲靜態url沒有任何意義。

對於我的解決辦法,我寫了一個方法,讓動態網址,這裏的個人資料圖片代碼:

private string GetFacebookProfilePicture(ClaimsIdentity externalInfoSoruce) { 
     var facebookUserID = externalInfoSoruce.Claims.First(c => c.Type == "urn:facebook:id").Value; 
     string profilePicturePath = string.Format("http://graph.facebook.com/{0}/picture?type=large", facebookUserID); 
     return profilePicturePath; 
    } 

現在每次我想展現給用戶他的自畫像,我可以插入到<img> SRC該鏈接參數。每次用戶登錄後照片都會自動更新。

0

不知道這是否是你應該這樣做的方式。但Facebook的個人資料照片可在http://graph.facebook.com/FACEBOOKID/picture獲得,因此您只需獲取用戶的ID並將其交換到該網址即可。

例如,我的臉書ID是729196216,所以如果你要求http://graph.facebook.com/729196216/picture你會得到我醜陋的杯子。 :)

+0

是的,我知道這一個。但是您無法設置高度或其他參數,因爲您可以在圖形瀏覽器中進行設置。如果您編寫了自己的圖片?redirect = false,您將獲取當前用戶個人資料圖片的參數。應該有其他方法來做到這一點。 – 2014-10-18 16:03:43

+0

http://graph.facebook.com/FACEBOOKID/picture?type=large? – 2014-10-18 16:36:57

+0

嗯..它似乎是這個鏈接工作。但是有沒有機會在範圍內檢索URL或圖片對象就像我們正在接收名稱,姓氏,電子郵件和性別一樣? 因爲在Facebook SDK中您可以接收圖片對象或僅圖片網址 – 2014-10-18 17:12:35