2012-02-01 16 views
0

ユーザーのメールをリクエストするために私のアプリケーションでアクセス許可を設定しようとしています。js api初期ログイン後に拡張アクセス許可がありません

<script> 
window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : 'APP_ID', 
    status  : true, 
    cookie  : true, 
    xfbml  : true, 
    oauth  : true, 
    }); 
    FB.Event.subscribe('auth.login', function(response) { 
    //window.location.reload(); 
    window.location = "/welcome.html"; 
    }); 

}; 


(function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
}(document)); 
</script> 

<div id="fb-root"></div> 
<div class="fb-login-button" data-scope="email" > 
    Login with Facebook 
</div> 

ユーザーが現在Facebookにログインしているときに、自分のアプリを許可するようダイアログが表示されます。また、電子メールの使用を許可するかどうかを尋ねます。これは期待される動作であり、動作します。

ユーザーが現在フェイスブックにログインしていないときには、ログインダイアログが表示されます(これも期待され、機能します)。次に表示されるダイアログは自分のアプリケーションを許可するものですが、彼らの電子メール、これは私が問題を抱えているところです。

私は他の質問に記載されているさまざまな方法を読み、試しました。 onclickを使用してFB.loginメソッドを呼び出し、権限スコープをそのように設定し、それでも運がないようにします。

FB.login(function(response) { 
    if (response.authResponse) { 
    window.location = "/welcome.html"; 
    }); 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
    } 
}, {scope: 'email'}); 

私はいくつかの他のアプリを見てきたように私はこれを適切に行う、私はちょうど私が欠けているものを見るカントこれが可能である知っています。私はまた、xfbmlのアプローチを試みて、divと同じ問題を抱えていました。

+0

。この奇妙なことに、私は今朝もこのコードをテストしてみましたが、期待通りに動いていて、何が起こっているのかわかりません。私はfbからログアウトしてから、 –

答えて

0

そのauth.loginイベントを購読するときは注意してください。 SDKがFB.init()status : trueと表示されたときにログインチェックを実行するときにも呼び出されます。

私はここでそれを何お知らせ:http://jsfiddle.net/dmcs/R4g47/(それはコメントアウトされますが、あなたとそれをアンコメントしてスクリプトを実行するあなたがそれに送信される状況に注意を払うようにしたい見ることができます

FB.Event.subscribe('auth.login', function(response) { 
    // { 
    // status: "",   /* Current status of the session */ 
    // authResponse: {   /* Information about the current session */ 
    //  userID: ""   /* String representing the current user's ID */ 
    //  signedRequest: "", /* String with the current signedRequest */ 
    //  expiresIn: "",  /* UNIX time when the session expires */ 
    //  accessToken: "", /* Access token of the user */ 
    // } 
    // } 

    alert('event status: ' + response.status); 
}); 
+0

あなたの入力をありがとうございました、この猫に皮膚に1つ以上の方法があると思います:) –

+0

はい、多くあります。片方向に固執してデバッグする。それが最高の攻撃計画です。 – DMCS