我特林使用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);
};
Facebook的單證說,「專輯」節點的「圖像」連接返回_An HTTP 302網址這張專輯的封面照片。這真是奇怪,我真的很想知道處理這個問題的正確方法是什麼? – 2011-04-18 17:06:09
我想我找到了一個可以接受的解決方案來解決我的問題。我只會使用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
你應該真的發現解決方案並將其作爲(自己的)問題的答案發布,並將其標記爲正確的答案。這樣它會更清晰。 – 2011-04-18 20:00:43