我正在使用FB C#SDK。也许我的问题很基本,但我已经尝试了很多选择,但我无法解决我的问题。
我使用get方法从facebook中检索信息,它与相册完美配合,所以这不是访问或初始化的问题。
这是我使用的代码行,它会向我返回带有相册信息的对象,对于任何用户来说,这都是一样的,因为应用程序会询问他的所有相册。它运行良好:
dynamic fotos = client.Get("me/albums");
当我要求照片时,问题就来了,因为它不像相册那样是一个静态值,它是一个基于用户选择的值,所以我使用了一个变量:
public ActionResult Photos(string albumstring)
{
... more code asking for token, etc.
dynamic fotos = client.Get(albumstring);
在那里它失败了,它给我返回了一个空对象。albumstring中的字符串文本正是所需的:"10150240194251714/照片",但它根本不起作用。
我像这样静态测试了它,它有效!:
public ActionResult Photos(string albumstring)
{
... more code asking for token, etc.
albumstring2 = "10150240194251714/photos";
dynamic fotos = client.Get(albumstring2);
但只有当它是一个静态值时,它才有效,将它与变量混合会使它失败,就像这个例子中一样:
public ActionResult Photos(string albumId)
{
... more code asking for token, etc.
albumstring = albumId + "/photos";
dynamic fotos = client.Get(albumstring);
我尝试了很多不同的方法来构造字符串,比如StringBuilders,添加转义符,从视图中构造它,并将其完整地提交给控制器,等等。但似乎如果不直接编写字符串,它就无法工作。
这可能是fb c#sdk的错误,但我需要解决它,我没有主意了。
这是我使用的方法,它可以很好地检索一些相册照片,其中类AlbumPhoto只是捕获数据的DTO。我希望它能帮助
public static List<AlbumPhoto> GetAlbumPhotos(string userAccessToken, string albumId)
{
var list = new List<AlbumPhoto>();
var client = new FacebookClient(userAccessToken);
dynamic photos = client.Get(String.Format("/{0}/photos", albumId));
foreach (var photo in photos.data)
{
lista.Add(new AlbumPhoto
{
FacebookId = photo.id,
Name = photo.name,
ImageUrl = photo.source,
Height = (int)photo.height,
Width = (int)photo.width
});
}
return list;
}