FB C#SDK Get方法存在问题,它适用于静态字符串,但不适用于由变量组成的字符串



我正在使用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;
    }

最新更新