Facebook FB.api ('/ me') бросает: "TypeEror: 'undefined' не является объектом" - PullRequest
2 голосов
/ 14 марта 2012

Функция Facebook FB.api( '/me' ) недавно начала выдавать следующую ошибку при запуске в мобильном браузере Safari :

TypeEror: 'undefined' не является объектом

Код отлично работает в настольном браузере (протестировано в Chrome 19dev / OS X и Safari 5.1.3 / OS X).Я пробовал два разных идентификатора приложения Facebook на двух разных доменах с одинаковыми результатами.Я пробовал два разных идентификатора пользователя Facebook с одинаковыми результатами.Я пытался аутентифицироваться с FB.login() и FB.getLoginStatus(), и это не имело никакого значения.

Демонстрация: http://thinkingstiff.com/fb.htm

Сценарий:

window.onload = function () {

    var script = document.createElement( 'script' );
    script.async = true;
    script.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    document.getElementById( 'fb-root' ).appendChild( script );

    window.fbAsyncInit = function () {
        FB.init( {
            appId: '252706924818818',
            cookie: true,
            status: true,
            xfbml: true,
            oauth: true
        } );
    };

    function login1() {
        FB.login( function ( response ) {
            if ( response.authResponse ) {
                try {
                    FB.api( '/me', function ( response ) { // this line throws error
                        alert( 'success: ' + response.name );
                    } );
                } catch ( error ) {
                    alert( 'error: ' + error );
                };
            } else {
                alert( 'unauthorized' );
            };
        }, { scope: 'email' } );
    };

    function login2() {
        FB.getLoginStatus( function ( response ) {
            if ( response.authResponse ) {
                try {
                    FB.api( '/me', function ( response ) { // this line throws error
                        alert( 'success: ' + response.name );
                    } );
                } catch ( error ) {
                    alert( 'error: ' + error );
                };
            } else {
                alert( 'unauthorized' );
            };
        } );
    };

    function initialize() {
        document.getElementById( 'login1' ).addEventListener( 'click', login1, false );
        document.getElementById( 'login2' ).addEventListener( 'click', login2, false );
    };

    initialize();

};
​

HTML:

<button id="login1" class="fb-button">Login 1</button>
<button id="login2" class="fb-button">Login 2</button>
<div id="fb-root"></div>

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Похоже, FB вчера внес некоторые изменения, которые могли вызвать эту проблему.Кажется, что любой браузер с деактивированной Flash-памятью прерывает вызовы API.У меня даже возникают проблемы при входе в Spotify.com на iphone / ipad Safari.

Это похоже на сообщение об ошибке: http://developers.facebook.com/bugs/315958608459599?browse=search_4f60cb168df304e98947536

1 голос
/ 14 марта 2012

У меня точно такая же проблема этим утром.Работал вчера.Без изменений с моей стороны.Прекрасно работает на настольных браузерах.Но терпит неудачу с TypeEror: 'undefined' не является ошибкой объекта на iPad.Кажется, это ошибка внутри FB.api.Надеюсь, кто-то в FB увидит это и исправит это как можно скорее.

...