3

Facebook Javascript SDKを使用するモバイルWebアプリケーションの場合、ユーザーのログインステータスを確認し、必要に応じてFacebookログインダイアログを表示します。次のコードは、Webアプリの特定のボタンのクリックハンドラー内で実行されます。

$('#button').click(function() {
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            // do something with the logged in and authorized user
        } else if (response.status === 'not authorized') {
            // logged in but has not authorized our app
        } else {
            // not logged in
            FB.login();
        }
    });
});

ユーザーがFacebookにログインしていないことを確認すると、これは正常に機能し、ボタンが押されたときにデスクトップWebブラウザーのログインダイアログを表示しますが、モバイルWebの場合は表示されません(少なくともさまざまなブラウザーのAndroidの場合は、私はしません現在iPhoneにアクセスできます)。モバイルWebアプリには何も表示されません。ポップアップブロッカーを無効にすると、このポップアップを許可するかどうかを尋ねるプロンプトが表示されます。これは機能します。

動作が異なる理由や、既知の/標準的な回避策を知っている人はいますか?ありがとう!

4

1 に答える 1

7

コードがすべてのデスクトップブラウザで機能するわけではありません。一部のブラウザ(モバイルおよびデスクトップ)は、ユーザーのクリックによって開始されない限り、ポップアップをブロックします。例えば、

$('#mybutton').click(function() {
   FB.login();
});

関数はユーザーのクリックに応答してのみ呼び出されるため、FB.login()機能します。したがって、コードを修正するには、呼び出しを「ログイン」ボタンとユーザーにそのボタンをクリックするように促すテキストを表示するコードに置き換えます。FB.login()

于 2012-08-01T20:02:16.930 に答える