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 のような文字列を構築するさまざまな方法を試しました。エスケープ char \ を追加し、ビューから構築してコントローラに完全に渡します。しかし、文字列が直接書き込まれていなければ、勝ったようです動作しません。

おそらく 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 に答える