1

FB ログイン ボタンをクリックすると、FB 認証ダイアログが表示されます。FB 資格情報を入力すると、ダイアログは次のような URL にリダイレクトされます。

https://www.facebook.com/dialog/permissions.request?wholeBunchOfQueryParameters

または、すでに FB にログインしている場合、ポップアップ ダイアログは次のようになります。

https://www.facebook.com/dialog/oauth?wholeBunchOfQueryParameters

しかし、それらは開いたままの空のダイアログです。ダイアログを閉じると、コールバックが発生しますが、それまでは発生しません。これは IE と Chrome での動作です。

これは正常に機能していましたが、新しいコンピューターを入手したときに機能しなくなったと思うので、環境によるものかもしれません。それ以来、それは機能していると思っていましたが、そうではないかもしれません。動作していたコードのバージョンに戻しましたが、動作しなくなったため、環境にあることがさらに示唆されますが、それが何であるかはわかりません。私は雑草の中でオフになる可能性があります。

また、もう 1 つ情報があります。私はローカルで開発しているので、localhost:port を使用しています。私はこの問題について多くの調査を行い、誰かが localhost の代わりに 127.0.0.1 を使用するように言っているのを見たので、それも試してみましたが、違いはありませんでした.

ダイアログが閉じない理由は何ですか?

<fb:login-button perms="email,user_checkins" onlogin="afterFacebookConnect();" 
   autologoutlink="false" ></fb:login-button>
<div id="fb-root" style="display:inline; margin-left:20px;"></div>

<script language="javascript" type="text/javascript">
window.fbAsyncInit = function () {
    FB.init({ appId: 'myAppId',
        status: true, cookie: false, xfbml: true
    });
};

function afterFacebookConnect() {
    FB.getLoginStatus(function (response) {
        alert("Hi");
        var access_token = FB.getAuthResponse()['accessToken'];
        if (response.authResponse) {
            window.location = "../Account/FacebookLogin?token=" +
                   access_token;
        } else {
            alert(FB.getAuthResponse);
        }
    });
};
function logout() {
    FB.getLoginStatus(function (response) {
        var access_token = FB.getAuthResponse()['accessToken'];
        if (response.authResponse) {
            window.location = "../Account/Logout";
        } else {
            // user clicked Cancel
        }
    });    
};
$(document).ready(function () {
    if (document.getElementById('fb-root') != undefined) {
        var e = document.createElement('script');
        e.type = 'text/javascript';
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
    }
});
</script> 
4

1 に答える 1

0

これは、ここ数日で表面化した既知のバグです ( https://developers.facebook.com/bugs/241915819261223を参照)。

良いニュースは、FB のエンジニアの 1 人が次のように述べていることです。これはすぐに解決されるはずです。

この問題の修正があり、すぐにプッシュされます。乞うご期待。

于 2012-07-01T02:41:14.080 に答える