2012-05-02 13 views
10

次のFB.Login機能は、Chrome、FF、Safariのデスクトップでうまく動作します。 しかし、モバイルSafari(iPhone 4Sでテスト済み)では、ハングしてFB.loginコールバックに戻りません。私はSafariを使用してユーザーエージェントを「Safari iOS 4.3.3 - iPhone」に設定するとコンソールでこれを見ることもできます。Facebook FB.loginはSafariで動作しますが、モバイルSafariでは動作しません

モバイルSafariがポップアップをブロックするためですか? (FB.loginがポップアップダイアログを表示します)。

これを修正するにはどうすればよいですか?ありがとう。

function Login(returnLink) { 
     FB.login(function(response) { 
        if(response.status === 'connected') { 
         console.log('User is now FB logged in.'); 
         // now log them into my site 
         encodedReturnLink = encodeURIComponent(returnLink); 
         window.location = location.protocol + '//' + location.host + "/login?returnUrl=" + encodedReturnLink; 
        } 
        else { 
         console.log('User did not fully authorize after clicking FB login button.'); 
        } 
       }, 
       {scope : 'email, publish_actions, publish_stream'} 
     ); 
} 
+0

あなたはユーザーの操作(クリック/タップ/サブミット)の直後にこれを呼びますか、いくつかの遅延コードからですか? –

+1

同じ問題が発生しています。あなたはこれに対する解決策を見つけましたか? – Jaffer

答えて

0

ポップアップをブロックすることは間違いありません。私はログインが直接呼び出されたときに動作するシナリオを見てきましたが、ajaxコールバックの結果は表示されません。

+0

でも、コールバックとして呼び出されたときにはブロックされていて、直接呼び出されたときにはブロックされないので、これは本当にポップアップをブロックする問題ですか? – gapvision

0

Facebookアプリの設定でモバイルサイトのURLを再確認してください。

6

window.fbAsyncInitのページに自動的にFB.Loginを実行しようとしましたが、iOSのSafariで動作しませんでした。 SafariがFB.Login呼び出しによってトリガされたポップアップウィンドウをブロックしていたことが判明しました。デスクトップ上のSafariとChromeはうまくいきました(ポップアップを許可しました)。

これは、ユーザー対話(たとえば、タップまたはクリック)に応答してFB.Login呼び出しをトリガーする唯一の方法です。これが私の仕事:サファリ(iOSの8.0)でテスト

HTML

<a href="#" id="fbLogin">Login with Facebook</a> 

のJavaScript(jQueryの)

$('#fbLogin').click(function(){ 
    FB.login(function(response){ 
     // Do something... 
    }); 
}); 

+0

+1正しい解を与える。それは私の頭痛を取り除いた。どうもありがとう。 – neeraj

+1

Safariはポップアップをブロックするのにかなり敏感です。あなたが(他のコールバックのために少しだけ待っていても)遅延した場合、それはブロックを引き起こすようです。 – justrhysism

+0

@wireblueこれは現在のバージョンでログインをトリガーする唯一の方法ですか? – gapvision

関連する問題