モバイル Safari および Android ブラウザーで JavaScript SDK を使用して facebook にログインしようとすると、奇妙なことが起こります。「履歴」と「Cookie とデータ」の両方をクリアし、FB.login メソッドを使用して Facebook にログインしようとすると、Safari と Android ブラウザは認証 URL で新しいタブを開きますが、空白のままです。すべてのデスクトップ ブラウザで、すべて問題なく動作します。
奇妙なことに、「履歴」と「Cookie とデータ」をクリアしてから facebook.com にアクセスし (ログインなどはせずに)、サイトを閉じ、サイトを開いて FB にログインしようとすると、それは実際にあるべきように機能します!
したがって、これは facebook.com が認証 URL を正常にロードする Cookie を設定しているようです。
この問題の解決策を探しましたが、何も見つからなかったため、最初のスタックオーバーフローの投稿...
完成させるために、これは FB SDK を初期化するために使用するコードです。
window.isFacebookSDKLoaded = false;
window.onFacebookSDKLoaded = function () {}; //is injected with a function from another js app on the site
window.fbAsyncInit = function() {
FB.init({
appId : '{{ appID }}', // App ID
channelUrl : '{{ baseUrl }}channel.php', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
window.isFacebookSDKLoaded = true;
window.onFacebookSDKLoaded();
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
私のアプリのどこか他の場所で、私は単純に次のことを行います:(Googleクロージャーを使用)
mm.controller.facebook.DoFBLogin.prototype.doLogin = function ()
{
FB.login( goog.bind( this.loginResult, this ), { scope: app.Config.getFBPermissions() } );
}
mm.controller.facebook.DoFBLogin.prototype.loginResult = function ( result )
{
// logged in
};
誰かが解決策を持っている場合...事前に感謝します!