2011-04-18 56 views
0

我特林使用Silverlight應用程序內facebook的C#SDK用下面的代碼來獲得來自Facebook的相冊圖片:Facebook的相冊照片使用Facebook的C#SDK

 FacebookClient client = new FacebookClient(this.Profile.AccessToken); 
     client.GetAsync(string.Format("/{0}/picture?type=small", this.ID)); 
     client.GetCompleted += (s, e) => 
     { 
      dynamic result = e; 
     }; 

凡this.ID是對的ID相冊,但我得到此錯誤: 解析值時遇到意外的字符: 。第1行,位置1. 來自JsonSerializer中的DeserializeObject方法。問題在於,facebook並沒有用imge uri或類似的東西返回json數據,但他們實際上是以二進制數據的形式返回圖像本身。任何人都知道我能如何處理這個結果,或者只是讓Uri看圖像? 我對這個使用此代碼解決方法:

 var request = WebRequest.Create(string.Format("https://graph.facebook.com/{0}/picture?access_token={1}", this.ID, this.Profile.AccessToken)); 
     request.BeginGetResponse(ar => 
     { 
      using (var response = ((WebRequest)ar.AsyncState).EndGetResponse(ar)) 
      { 
       Deployment.Current.Dispatcher.BeginInvoke(() => 
       { 
        this.Picture = new BitmapImage(new Uri(response.ResponseUri.AbsoluteUri)); 
       } 
       ); 
      } 
     }, request); 

但我真的很想只使用Facebook的C#SDK用於獲取數據。

這裏是我將使用該解決方案:

 FacebookClient client = new FacebookClient(this.Profile.AccessToken); 
     client.QueryAsync(String.Format("SELECT src_small, src_big, src FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE object_id={0})", this.ID)); 
     client.GetCompleted += (s, e) => 
     { 
      dynamic result = e.GetResultData(); 

      Deployment.Current.Dispatcher.BeginInvoke(() => this.Picture = result[0].src_small); 
     }; 
+0

Facebook的單證說,「專輯」節點的「圖像」連接返回_An HTTP 302網址這張專輯的封面照片。這真是奇怪,我真的很想知道處理這個問題的正確方法是什麼? – 2011-04-18 17:06:09

+0

我想我找到了一個可以接受的解決方案來解決我的問題。我只會使用FQL而不是Graph API。這將完成這項工作: 'FacebookClient客戶端=新FacebookClient(this.Profile.AccessToken); client.QueryAsync(String.Format(「SELECT src_small,src_big,src FROM photo WHERE pid IN(SELECT cover_pid FROM album WHERE object_id = {0})」,this.ID)); client.GetCompleted + =(s,e)=> {dynamic result = e.GetResultData(); Deployment.Current.Dispatcher.BeginInvoke(()=> this.Picture = result [0] .src_small); };' – 2011-04-18 17:55:37

+0

你應該真的發現解決方案並將其作爲(自己的)問題的答案發布,並將其標記爲正確的答案。這樣它會更清晰。 – 2011-04-18 20:00:43

回答

0

我想我找到了我的問題可接受的解決方案。我只會使用FQL而不是Graph API。這將完成這項工作:

 FacebookClient client = new FacebookClient(this.Profile.AccessToken); 
     client.QueryAsync(String.Format("SELECT src_small, src_big, src FROM photo WHERE pid IN (SELECT cover_pid FROM album WHERE object_id={0})", this.ID)); 
     client.GetCompleted += (s, e) => 
     { 
      dynamic result = e.GetResultData(); 

      Deployment.Current.Dispatcher.BeginInvoke(() => this.Picture = result[0].src_small); 
     }; 
1

我正面臨着類似的問題。只想使用Facebook C#SDK。 解決這樣的:

FacebookClient facebookAlbumClient = new FacebookClient(_albumAccessToken); 
dynamic facebookAlbumCover = facebookAlbumClient.Get(string.Format("/{0}?fields=picture&type=thumbnail", (string)facebookAlbum["id"])); 

這樣,你所得到的JSON數組,而不是圖片