2013-04-30 2 views
0

im в настоящее время работает над интеграцией facebook в мою мобильную игру AS3. Я загружаю фотографии друзей, которые отлично работают и в настоящее время не являются проблемой. Проблема в том, что я пытаюсь обнаружить, если пользователь имеет силуэт (по умолчанию) или свой собственный (свойство is_silhouette);Facebook graph api function - пустой ответ

Здесь идет код:

(ответ [я] .id) является действительным идентификатором пользователя, который я получил от предыдущих апи

коммуникацию
... 
HasDefault(response[i].id); 
... 

    private function HasDefault(uid:int):void{ 
     FacebookMobile.api("/"+uid+"/picture", callbackX); 
    } 


    private function callbackX(response:Object,fail:Object):void{ 
    if (response != null){ 
     trace(response.url); 
     trace(response.is_silhouette); 
    }else{ 
     trace("here goes nothing..."); 
    } 

первые вещи первой ... этот код выше, имеет 2 вопросы. Первая проблема, если я не использовать абсолютный URL, facebook не отвечает, поэтому метод API фактически выглядеть следующим образом:

FacebookMobile.api("https://graph.facebook.com/"+uid+"/picture", callbackX); 

я не знаю, почему я должен использовать абсолютный URL здесь, потому что нигде идентификатор/функция достаточно хорошо ... но это еще не главная проблема.

Если я использую абсолютный URL, я получаю действительный ответ от facebook, но в соответствии с этим https://developers.facebook.com/docs/reference/api/using-pictures/ я должен получить response.url и response.is_silhouette в моем объекте ответа. однако я получаю только пустой объект отклика ... Я начинаю быть отчаянным.

Кроме того, я попытался вставить тот же запрос в https://developers.facebook.com/tools/explorer исследователь и сюрприз сюрприз ... она возвращает

{ 
    "data": { 
    "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-frc1/somenumbers.jpg", 
    "is_silhouette": false 
    } 
} 

... это именно то, что мне нужно ... но в приложении я получаю только пустой объект ответа ...

+1

Для назидания, вот предыдущий вопрос: http://stackoverflow.com/questions/16307115/facebook-graph-api-function-empty-response –

ответ

1

Я не знаю, что вы начертаете "FacebookMobile.api (" "+ uid +"/picture ", callbackX);" делает. Но какая бы библиотека ни была, перестань использовать ее, потому что она не позволяет вам указать вызов, который вы хотите сделать. Вы можете просто вызвать вызов api graph api, используя URLLoader.

Итак, вот волшебная вещь, которая идет не так: вам нужно добавить дополнительную переменную, когда вы запрашиваете изображение: «? Redirect = false» Это говорит facebook, чтобы дать вам ответ json. Если у вас нет этой переменной, вы получите переадресацию на фактическое изображение, которое обычно является тем, чего хочет человек. Чтобы посмотреть, как это работает, проверьте две приведенные ниже ссылки: одну с redirect = false - которую вы хотите. и один с ним установлен в true - чего вы не делаете.

https://graph.facebook.com/shaverm/picture?redirect=false

https://graph.facebook.com/shaverm/picture?redirect=true

Я уверен, что происходит в том, что вы получаете изображение обратно вместо ответа JSon описывающего изображение.

+0

Я рассмотрю это. Кстати, FacebookMobile является официальным Adobe sdk для OpenGraph API ... – Casper522

+0

Ahh да. Это. Последнее обновление октября 2011 года? https://code.google.com/p/facebook-actionscript-api/source/list Я думаю, что может быть время отказаться от него и переключиться на вызов графика напрямую. –

+0

вы были правым человеком, я попытался загрузить его с помощью redirect false через стандартный загрузчик/модель запроса, и это сработало, как шарм, спасибо. Да, может быть, спасибо за ваши советы – Casper522