0

私はFacebookのモバイルWebアプリに取り組んでいます。以下の機能があります。

function getUserFriends() {
    FB.api('/me/friends&fields=name,picture', function(response) {
        console.log('Got friends: ', response);

        if (!response.error) {
            var markup = '';

            var friends = response.data;

            for (var i=0; i < friends.length && i < 25; i++) {
                var friend = friends[i];

                markup += '<img src="' + friend.picture + '"> ' + friend.name + '<br>' + friend.id + '<br>';
            }

            document.getElementById('user-friends').innerHTML = markup;
        }
    });
}

戻ってきたとき、写真がありません。コンソール ログは次を返します。

[06:02:12.503] GET http://m.mochirestaurant.com/fb/%5Bobject%20Object%5D [HTTP/1.1 404 Not Found 77ms]

それは次のようなものを返す必要がありますが:

http://profile.ak.fbcdn.net/hprofile-ak-ash2/276211_285403872_5043326_q.jpg

Facebook アプリで何かを誤って設定したと思いますが、それが何かわかりません

4

1 に答える 1

0

[06:02:12.503] GET http;//m.mochirestaurant.com/fb/%5Bobject%20Object%5D [HTTP/1.1 404 Not Found 77ms]

実際の値の代わりに、(URL エンコードされた角かっこで) そこにあることがわかります。[object]これは、オブジェクトを文字列コンテキストに持ち込もうとしたときにブラウザーが返すものです。(これは http://… で始まる完全な URL ではないため、ブラウザはこれを相対アドレスとして扱い、ドメインから要求しようとします。)

したがってfriend.picture、コードのこの時点では、文字列値ではなくオブジェクトであることは明らかです。

(これまでのところ、デバッグとエラー部分の発見についてです。)

これは、ユーザー/画像接続に関する2012 年 10 月 3 日の重大な変更に起因します。

/picture 接続は、コールバックが指定されている場合に辞書を返します

オブジェクトの /picture 接続にアクセスし、コールバック プロパティを指定すると、フィールド url、height、width、および is_silhouette を含む辞書が返され始めます。現在、画像の URL を文字列として返すだけです。

そのため、コードでを使用friend.picture.urlして、ユーザー画像の URL を含む実際の文字列プロパティを取得する必要があります。

于 2012-08-07T12:08:21.980 に答える