График API - FB - уже схожу с ума. : s - Получение фотографий профиля - PullRequest
0 голосов
/ 12 февраля 2011

Я могу получить фотографии профиля из этого:

data": [
      {
         "id": "11111111111_22222222222",
         "from": {
            "name": "Some Name",
            "category": "Non-profit organization",
            "id": "11222131212211"
         },

Я делаю так:

$.each(json.data,function(i,fb){
  html += "<img id=\"image"+i+"\" src=\"http://graph.facebook.com/" + fb.from.id + "/picture\"/>";
}

Нет проблем.

Однако позже на графике у меня будет:

"id": "11111111111_2222222222",
         "to": {
            "data": [
               {
                  "name": "Some Name",
                  "category": "Non-profit organization",
                  "id": "11222131212211"

И мне нужно взять этот идентификатор, но я попробовал: alert(fb.to.data.id); ничего не получил. Если я это сделаю: alert(fb.to) Я получил "undefined".

Кто-нибудь имел такие проблемы или подобные. Как вы можете заметить, я совсем не разбираюсь в вопросах программирования, однако я приложу все усилия, чтобы решить эту проблему.

1) Как я могу отобразить изображение профиля во втором случае? 2) Как я могу сказать: используйте fb.from.id только тогда, когда на графике это есть.

О 2), обратите внимание, что если я прокомментирую строку:

//html += "<img id=\"image"+i+"\" src=\"http://graph.facebook.com/" + fb.from.id + "/picture\"/>";

изображения не будут отображаться, и вся информация о публикации (кроме изображения профиля) будет отображаться в окне просмотра.

Если я имею дело только с первой частью этого графика (с "from:"), я получаю картинку для этого поста.

ТАК, проблема, действительно, должна быть во второй части графика. Тот, у которого я не могу получить удостоверение личности "to:".

Я также пытался избежать рендеринга изображения во втором случае, но, по крайней мере, запустил первый. Не повезло вообще.

if (fb.from.id != undefined) {
 //do something;
}

Вторая часть графика все еще возвращает ошибку.

Со всем этим беспорядком, который я могу изменить, могу ли я попросить вашей помощи. : S

**

Обновление:

**

Код JS:

function fbFetch(){
        var url = "https://graph.facebook.com/125120007543580/feed&callback=?&limit=2";

    var i = 0;

        //Use jQuery getJSON method to fetch the data from the url and then create our unordered list with the relevant data.
    $.getJSON(url,function(json){
        var html = "<div id=\"faceWall\">";
            //loop through and within data array's retrieve the message variable.
            $.each(json.data,function(i,fb){

                    var idTotal = fb.id;

                    var ids = idTotal.split("_");

                    var href = "http://www.facebook.com/"+ids[0]+"/posts/"+ids[1];


                    var msg = fb.message;

                    //adicionado 
                    if (msg == undefined) {
                        msg = 'Cick here to see the post title';
                    } else if (msg.length > 150) {
                        msg = msg.substr(0,200)+"...";
                    } 

                    //ISSUE HERE. IF I COMMENT THIS LINE ALL GOES WELL BUT NO PROFILE PICTURES ARE DISPLAYED.
                    html += "<img id=\"imagem"+i+"\" src=\"http://graph.facebook.com/" + fb.from.id + "/picture\"/>";      

                    html += "<div id=\"textoFaceWall\">";

                    html += "<p id=\"msg"+i+"\">";


                    //adicionado fb.name em vez de fb.from.name:
                    if (fb.name == undefined) {
                          html += "<a href=\""+href+"\" target=\"_blank\">" + fb.from.name + "</a> - " + msg + "</p>";
                    } else {
                          html += "<a href=\""+href+"\" target=\"_blank\">" + fb.name + "</a> - " + msg + "</p>";
                    }

                    html += "<p class=\"dataPostWall\" id=\"data"+i+"\">"+ dataFinal + "</p> ";

                    html += "</p>";

                    html += "</div>";

                    html += "<img class=\"linhaHomePageCanais\"  src=\""+baseUrl+"/lib/img/linhaWall.png\" alt=\"linha wall\"/>";

            });

        html += "</div>";

        $("#coluna2").append(html);

    });


};

fbFetch();  

И часть графика:

({
   "data": [
      {
         "id": "125120007543580_150880001634837",
         "from": {
            "name": "Some Name",
            "category": "Non-profit organization",
            "id": "125120007543580"
         },
{
         "id": "125120007543580_111122368963254",
         "to": {
            "data": [
               {
                  "name": "Some Name",
                  "category": "Non-profit organization",
                  "id": "125120007543580"
               }
            ]
         },

Мне нужно отобразить профиль из fb.to.data.id, Однако теперь я замечаю, что данные имеют [ вместо {, и это может означать, что для доступа к id мне нужно использовать другой синтаксис, возможно?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Поскольку параметры to могут содержать более одного пользователя, это массив объектов .Так что вам нужно повторить это тоже:

if(fb.to) {
    $.each(fb.to.data, function(j,to_user) {
        // now you access it to_user.id
    });
}

Если вы хотите показать только первое изображение профиля, используйте fb.to.data[0].id.

РЕДАКТИРОВАТЬ:
Хорошо, на основе ваших комментариев и обновлений, вот ваш код с рабочим подходом:

function fbFetch(){
        var url = "https://graph.facebook.com/125120007543580/feed&callback=?&limit=2";
    var i = 0;
        //Use jQuery getJSON method to fetch the data from the url and then create our unordered list with the relevant data.
    $.getJSON(url,function(json){
        var html = "<div id=\"faceWall\">";
            //loop through and within data array's retrieve the message variable.
            $.each(json.data,function(i,fb){
                    var idTotal = fb.id;
                    var ids = idTotal.split("_");
                    var href = "http://www.facebook.com/"+ids[0]+"/posts/"+ids[1];
                    var msg = fb.message;
                    //adicionado 
                    if (msg == undefined) {
                        msg = 'Cick here to see the post title';
                    } else if (msg.length > 150) {
                        msg = msg.substr(0,200)+"...";
                    } 
                    //ISSUE HERE. IF I COMMENT THIS LINE ALL GOES WELL BUT NO PROFILE PICTURES ARE DISPLAYED.
                    if(fb.from)
                        html += "<img id=\"imagem"+i+"\" src=\"http://graph.facebook.com/" + fb.from.id + "/picture\"/>";

                    if(fb.to) {
                        $.each(fb.to.data, function(j,to_user) {
                            html += "<img id=\"imagem"+i+"-"+j+"\" src=\"http://graph.facebook.com/" + to_user.id + "/picture\"/>";
                        });
                    }

                    html += "<div id=\"textoFaceWall\">";
                    html += "<p id=\"msg"+i+"\">";
                    //adicionado fb.name em vez de fb.from.name:
                    if (fb.name == undefined) {
                          html += "<a href=\""+href+"\" target=\"_blank\">" + fb.from.name + "</a> - " + msg + "</p>";
                    } else {
                          html += "<a href=\""+href+"\" target=\"_blank\">" + fb.name + "</a> - " + msg + "</p>";
                    }
                    html += "<p class=\"dataPostWall\" id=\"data"+i+"\">"+ dataFinal + "</p> ";
                    html += "</p>";
                    html += "</div>";
                    html += "<img class=\"linhaHomePageCanais\"  src=\""+baseUrl+"/lib/img/linhaWall.png\" alt=\"linha wall\"/>";
            });
        html += "</div>";
        $("#coluna2").append(html);
    });
};
fbFetch();
1 голос
/ 15 марта 2013

Вы можете попробовать это для PHP

$request_url = 'http://graph.facebook.com/redbull/picture?redirect=false';  
$requests = file_get_contents($request_url);  
$fb_response = json_decode($requests);  
$imagen[]=$fb_response->data->url;  

Там вы получите URL картинки из элемента URL в вызове API JSON Graph.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...