3

モバイル 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
};

誰かが解決策を持っている場合...事前に感謝します!

4

0 に答える 0