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>