Функция 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>