Javascript を使用して、Facebook ログイン機能を Web サイトに追加しようとしています。FB.init と FB.login を呼び出したところ、予想されるポップアップ ウィンドウが表示され、Facebook 資格情報でログインするよう求められました。FB.login への呼び出しは user_birthday と電子メールのアクセス許可を要求するため、これらのアクセス許可を許可するように求めるダイアログも表示されます。受け入れると、ログインが機能し、コントロールが親ページに戻ります。
許可を受け入れない場合 ([キャンセル] ボタンを押す)、次に起こることは矛盾しているようです。私が望んでいたのは、ポップアップウィンドウが消えて親ウィンドウに制御が戻り、拒否された応答を処理できるようになることでした。最終的には、ユーザーがキャンセルするとどうなるかを知らせるメッセージをユーザーに提供したいと考えています。
代わりに、Facebook に直接ログインしたときに表示されるメインの Facebook ページにポップアップ ウィンドウがリダイレクトされることがあります。ポップアップ ウィンドウが空白になり、そこに座っていることがあります (FB.init 呼び出しで指定した ChannelUrl ページを指しています)。どちらの場合も、ポップアップ ウィンドウを手動で閉じるまで、コントロールは親ページに戻りません。
サンプルコード:
<html>
<body>
<div id="fb-root"></div>
<script language="Javascript">
window.fbAsyncInit = function() {
FB.init({
AppId : 'XXXXXXX',
channelUrl: 'http://www.mydomain.com/channel.html', //custom channel
status: true,
cookie: true,
xfbml: true,
oauth: true
});
};
// Load the SDK Asynchronously
(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))
function fbLogin()
{
FB.login(function (response){
if (response.authResponse) {
Debug("Auth Logged in");
}
else
{
Debug("Auth failed");
}
}, {scope:'user_birthday,email'});
}
function Debug(psMessage)
{ // something to provide feedback on what happened...
var objDebug = document.getElementById("Debug");
var objDate = new Date();
var sTime = objDate.getHours() + ":" + objDate.getMinutes() + ":" + objDate.getSeconds();
objDebug.innerHTML = sTime + " - " + psMessage + "<br>" + objDebug.innerHTML;
}
</script>
<form>
<input type="button" value="Log in" onClick="fbLogin();">
<br>
<br>
<br>
<br>
<div id="Debug"></div>
</form>
</body>
</html>
いろいろ試してみました。削除して新しいアプリケーションを作成しました。channelUrl パラメータを作成しました (これには のみが含まれます
<script src="//connect.facebook.net/en_US/all.js"></script>
)。
私が間違っていることについて何か洞察を持っている人はいますか?
助けてくれてありがとう!