私はこの問題を抱えています。
Facebookのタブページにこのコードがあり、ご覧のとおり、ユーザーがアクセスするときにいくつかの権限が必要です。問題は、「閉じる」ボタンをクリックすると、FB.login のコールバックが開始されず、FB がこれをコンソールにスローすることです。
- Chrome: "Uncaught TypeError: 未定義のプロパティ 'e2e' を読み取れません".
- Firefox: 「ea.result は定義されていません」
アクション
コード
...
<script src="//connect.facebook.net/en_US/all.js"></script>
</head>
<body>
<div id="fb-root"></div>
<script>
var api = new Object();
api.login = false;
api.width = 810;
api.height = 970;
function login() {
FB.login(function(response) {
if (response.authResponse) {
// here it works when user click 'Go to app' button
alert('Go to app');
} else {
// here is the problem, because this else doesn't start-
// -when user click 'Close' button
alert('CLOSE');
}
}, {scope: 'email,user_birthday'});
}
function loginStatus(response) {
if (response && response.status === 'connected') {
// already auth
api.login = true;
} else {
login();
}
}
function sizeChangeCallback() {FB.Canvas.setSize({ width: api.width, height: api.height });}
window.fbAsyncInit = function() {
FB.init({
appId : '564323490269057',
status : true,
cookie : true,
xfbml : true
});
FB.Canvas.setSize({ width: api.width, height: api.height });
FB.getLoginStatus(loginStatus);
}
(function(d, debug){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, /*debug*/ false));
</script>
</body>
</html>