Facebookと統合されたFacebookアプリケーションを開発中で、ユーザーのFBセッションを取得しようとしています。私が理解する限り、一般的な使用シナリオは次のとおりです。FB.getLoginStatusはユーザーがFacebookにログインしていないと起動しません
- コール
FB.init()
それを適切なコールバックを与える
- コール
FB.getLoginStatus
。
次のコード(アプリケーションID)を実行しました。
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
<!--
function init(){
FB.init({
appId : '9999999999999',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://127.0.0.1:8888/channel.html', // custom channel
oauth : true // enable OAuth
});
alert('going to call FB.getLoginStatus ');
FB.getLoginStatus(function(response) {
alert('whoo hoo!!! getLoginStatus called the callback');
});
}
init();
//-->
</script>
ユーザーが既に同じブラウザセッションでFacebookにログインしている場合、期待どおり、その後すべてが動作します - 人口_response.authResponse_
を返します。ただし、ユーザーがFacebookにログインしていない場合、コールバックはまったくトリガーされません。ブラウザのネットワークログを確認すると、Facebookは次の応答を返します(http://www.facebook.com/dialog/oauth
からのリクエスト?)。
Application Error: There was a problem getting data for the application you requested. The application may not be valid, or there may be a temporary glitch. Please try again later.
ChromeとFirefox(Mac)でこれを確認しました。
更新
私は答えたみんなに感謝したいと思います。
Benさんのコメントが答えました。
ありがとうございました - あなたは私に多くの欲求不満を救った。
あなたのアプリはサンドボックスモードですか?もしそうなら、これを引き起こす可能性のあるバグがあります:http://bugs.developers.facebook.net/show_bug.cgi?id=19359 –
channelUrlをループバックとして使用していますか?私はループバックがその機能のために働くとは思わない。 –
channelUrlの使用方法についてはこちら[https://developers.facebook.com/docs/reference/javascript/FB.init/]で説明しています。明らかに、ロード時間を短縮し、いくつかの問題を回避するのに役立ちます。 私が開発中に何かしても本当に気にしないで、私がライブに行くときに助けてください。 –