次のコードを使用して、Facebook 認証を介してユーザーを誘導するモバイル Web サイトを構築しています。
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
window.fbAsyncInit = function () {
FB.init({
appId: '{app_id}', // App ID from the app dashboard
channelUrl: '{app url}', // Channel file for x-domain comms
status: true, // Check Facebook Login status
xfbml: true
});
FB.login(function (response) {
//FB.login contents
}, {
scope: '{permissions}'
});
}
これはデスクトップ ブラウザーでは機能しますが、モバイル ブラウザーでは FB.login はトリガーされません。多くの人がこの問題を抱えているようです。このStack Exchange questionによると、window.fbAsyncInit 内で FB.login を起動することはできません。この問題を回避する最善の方法は、すべてが読み込まれると FB.login をトリガーするボタンを用意することです。実装する前に、これが私の最善の選択肢であることを権威のある人が確認できますか。