1

我正在使用 FB C# SDK。可能我的问题是非常基本的,但我已经尝试了很多选项,但我无法解决我的问题。

我正在使用 get 方法从 facebook 检索信息,它与相册完美配合,所以它不是 access_token 或初始化的问题。

这是我使用的代码行,它返回包含专辑信息的对象,对于任何用户来说,它总是相同的,因为应用程序要求他的所有专辑。它工作正常:

    dynamic fotos = client.Get("me/albums");

当我要求照片时,问题就来了,因为它不是像相册一样的静态值,它是基于用户选择的值,所以,我使用了一个变量:

    public ActionResult Photos(string albumstring)
           { 
           ... more code asking for token, etc. 

    dynamic fotos = client.Get(albumstring);

它失败了,它返回一个空对象。Albumstring 中的字符串文本正是需要的:“10150240194251714/photos”,但它不起作用。

我像这样静态测试了它,它可以工作!:

     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 的错误,但我需要解决它而且我没有想法。

4

1 回答 1

1

这是我使用的方法,它可以很好地检索一些专辑照片,其中 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;
    }
于 2013-01-24T16:23:34.800 回答