我想通过Silverlight应用程序中的facebook C#SDK使用以下代码从facebook获取专辑图片:
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 :(得分:1)
我遇到了类似的问题。也想要使用Facebook C#SDK。 像这样解决了:
FacebookClient facebookAlbumClient = new FacebookClient(_albumAccessToken);
dynamic facebookAlbumCover = facebookAlbumClient.Get(string.Format("/{0}?fields=picture&type=thumbnail", (string)facebookAlbum["id"]));
这样你就得到了json数组而不是图片
答案 1 :(得分: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);
};