我特林使用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