2012-04-05 11 views
2

Javascriptを使用して自分のWebサイトにFacebookのログイン機能を追加しようとしています。 私はFB.initとFB.loginを呼び出して、Facebookの資格情報でログインするように求められる予想されるポップアップウィンドウを取得しました。 FB.loginを呼び出すと、user_birthdayと電子メールのアクセス権が要求されるため、これらのアクセス権を許可するかどうかを確認するダイアログが表示されます。私が同意すると、ログイン作業とコントロールは親ページに戻ります。Facebookの権限からキャンセルするダイアログはリダイレクトされ、終了しません

私は([キャンセル]ボタンを押す)の権限を受け入れない場合は、次に起こることは矛盾しているようです。私が望んでいたのは、ポップアップウィンドウが消えて親ウィンドウに制御を戻し、拒否された応答を処理できるということでした。最終的に私は、ユーザーに、キャンセル時に何が起こるかを知らせるメッセージを伝えたいと思う。

代わりに、私は時々、ポップアップウィンドウでは、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>が含まれています)。

誰もが(これはすべてのWindows XP上のIE8、Safariの5.0.5、およびFirefox 11.0に少なくとも起こるようです)私が間違ってやっているものに、任意の洞察力を持っていますか?

ありがとうございました!

+0

私はまったく同じ問題を抱えているが、時には窓はちょうど/connect/xd_proxy.php 'でハング'?。だからイライラする。 –

答えて

0

私は、これは古いスレッドですけど、うまくいけば私の解決策は、同じ問題に直面していることを人々を助けるだろう。

  1. 古いFacebook Appsダッシュボードを使用している場合は、サンドボックスモードを無効にします。新しいFacebookのアプリダッシュボードを使用する場合は

  2. 、(左のサイドバー上)ステータスとレビューをクリックして、NOからYESに「...一般に公開さ」を変更しません。

希望します。グッドラック;)

関連する問題