0

私のアプリには Facebook ログイン ボタン ( <fb:login-button>) があり、ユーザーを Facebook にログインさせ、アプリの使用を認証します。これが私のコードです(login()そしてlogout()、それぞれログインおよびログアウトするためのページレイアウトを準備します)。このコードの背後にある理由については、この回答を参照してください。

window.fbAsyncInit = function() {
   FB.init({
        appId: myAppID,
        channelUrl: window.location.protocol + '//' 
            + window.location.host + '/channel.html',
        status: false,
        cookie: true,
        xfbml: false,
        oauth: true
    });

    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            login(response);
        } else {
            FB.Event.subscribe('auth.login', function(response) {
                login(response);
            });
            logout();
        }
    });
}

(function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) return;
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
}(document));

問題: 新規ユーザーは Oauth ダイアログを取得し、Facebook にログインできますが、起動auth.loginしません。どちらもしませんauth.authResponseChange(auth.statusChangeすべてここで説明されています)。次にユーザーがボタンを押すか、すでに Facebook にログインしている場合は、ダイアログがポップアップしてすぐに消えます。(不思議なことに、私自身の Facebook アカウントで期待どおりにコールバックが発生します。おそらく、以前にアプリを認証したことが原因です。)

回避策としてFB.login()、ログイン ボタンの手動 onclick イベントとしてトリガーを試みました (インライン Javascript の使用を許してください)。

<fb:login-button onclick="FB.login(function(r){if(r.authResponse)login(r)})">

ただし、これはログイン コールバックもトリガーしません (ただし、ユーザーはログインします)。

ログインボタンでFacebookにログインする正しい方法は何ですか?

4

1 に答える 1