Facebook的FB.api( '/me' )
功能最近开始在移动版Safari中运行时出现以下错误 :
TypeEror:' undefined'不是一个对象
代码在桌面浏览器中正常运行(在Chrome 19dev / OS X和Safari 5.1.3 / OS X中测试过)。我在两个不同的域上尝试了两个不同的Facebook应用ID,结果相同。我尝试了两个不同的Facebook用户ID,结果相同。我尝试使用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>
答案 0 :(得分:2)
看起来FB昨天推动了一些可能导致这个问题的变化。任何禁用Flash的浏览器似乎都会导致api调用中断。我甚至无法在iphone / ipad Safari上登录Spotify.com。
这看起来像是在http://developers.facebook.com/bugs/315958608459599?browse=search_4f60cb168df304e98947536
报告的错误答案 1 :(得分:1)
今天早上我遇到了完全相同的问题。昨天上班了。我的结局没有变化。适用于桌面浏览器。但是使用TypeEror失败:'undefined'不是iPad上的对象错误。似乎是FB.api中的错误。希望FB的某个人能够看到这个并尽快解决它。