ページの読み込み時にコードでFacebookのログイン方法を使用していますが、このコードを実行すると、ポップアップブロッカーがFacebookのアクセス許可ウィンドウを閉じます。
ポップアップブロッカーで例外を作成せずに、このウィンドウをJavascript
で開くにはどうすればよいですか?
以下は私のコードです:
FB.login(function(response)
{
if(response.session!=null)
{
window.location.href='http://example.com';
}
},
{ perms: 'email,user_birthday,publish_stream' });
あなたは次のようなことをすることができます-
var uri = encodeURI('http://example.com');
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
window.location.href=uri;
} else {
window.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri="+uri+"&response_type=token");
}
これは、ポップアップを開く代わりに直接リダイレクトします
これは、ドキュメントでは特に否定されています。
「これはポップアップを開くときにのみユーザーイベントで呼び出す必要があります。ボタンやリンクのクリックなどのユーザーイベントから開始された場合を除き、ほとんどのブラウザはポップアップをブロックします。」
それは単に貧弱なUXでもあります。
ポップアップブロッカーの周りにコーディングできれば、ポップアップブロッカーが存在しても意味がありません。ポップアップを使用しないメソッドを見つけるか、ポップアップを開くためにブラウザとのユーザー操作が必要になります。
ええ、ユーザーイベントで呼び出す必要がありますが、厳密にはonclick
イベントであり、他のイベントではありません。
<a href="#" onclick="fbLogin()"> Login</a> <!-- works -->
<a href="#" onmousedown="fbLogin()"> Login</a> <!-- doesnt work -->
<a href="#" onmouseup="fbLogin()"> Login</a> <!-- doesnt work -->
ポップアップを自動的に開こうとすると、ポップアップブロッカーがアクティブになる可能性が高くなります。私の知る限り、ボタンのクリックなどのユーザーアクションに基づいている必要があります。ボタンをクリックしてこのコードを実行してみてください。動作するはずです。