0

次の Facebook UI 呼び出しで画像属性が機能しない理由を知っている人はいますか?

function postToWallUsingFBUi()
    {   
        var data=
        {
        method: 'stream.publish', 
        message: "Posted using FB.ui and picture.",
        display: 'iframe',
        caption: "Caption",
        name: "Name",
        //ver 1 picture: 'http://www.somedomain.com/albums/s339/rockaja/fb-520.png',   
        //ver 2 picture: '@Url.Action("Action", "Controller", new { PageId = Model.PageTabId }, Request.Url.Scheme)',
        picture: 'https://localhost/MyVirtualDirectory/Controller/Action/283659015078395',
        link: "http://www.mydomain.com/",  // Go here if user click the picture
        description: "Description field",
        actions: [{ name: 'action_links text!', link: 'http://www.mydomain.com' }]           
        }
        FB.ui(data, onPostToWallCompleted);
    }

ご覧のとおり、picture 属性は localhost の画像を使用しています。この URL をブラウザのアドレス フィールドに貼り付けると、期待どおりの画像が表示されます。

他の 2 つのバージョンもコメントアウトしました。バージョン 1 は期待どおりに正しく動作していますが、バージョン 2 は動作していません (これは ASP.NET MVC 呼び出しですが、その事実は結果に影響しません)。

ローカルホストの写真をリクエストしたことが原因でしょうか?!

4

1 に答える 1

0

私は FB API に取り組んだことがないので、私の提案を少しの塩で受け止めてください。

Facebook がどのように機能するかについての私の理解に基づいて、ユーザーのウォールで共有する写真はすべて、最初に FB のデータ ストアに入り、常にそのストアから取得されます。

ここで、Facebook API は、提供された URL から画像をダウンロードし、それを独自のストアにプッシュしてから、ユーザーのウォールに公開する場合があります。ローカルホストの URL を使用すると、画像をダウンロードする呼び出しは明らかに失敗します。

画像コンテンツをバイト配列として送信できる別のバージョンの API が必要です。ある場合は、自分でディスクから画像をロードし、API でバイト配列を送信できます。

于 2012-11-18T10:14:30.860 に答える