私はFacebookの友人を示す1つのアプリケーションを作成しています。まず、ユーザーがログインボタンをクリックする必要があります。その後、ログインIDとパスワードを入力した後、簡単なポップアップ画面が表示され、友人リストが表示されます。
Firefox、Chrome、IEでは問題なく動作しますが、SafariやiPhoneではポップアップが開かれません。
誰かが私にchannelUrl
にドメイン名とチャンネル名を追加するよう勧めます。私はchannel.html
を1つ作成し、参照を追加しますが、それは私を助けませんでした。
ロットを検索しましたが、役に立たなかったSafari/iPhoneでログインできません
ここに私のコードです。
Custom.js
function getUser()
{
FB.init({
appId : '289403314507596', // App ID
channelUrl : 'http://bc2-236-161.compute-1.amazonaws.com/html/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
(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));
//check current user login status
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
window.location="facebook_friend.html"
loadFriends();
} else {
//user is not connected.
FB.login(function(response) {
if (response.authResponse) {
window.location="facebook_friend.html"
loadFriends();
} else {
alert('User cancelled login or did not fully authorize.');
}
});
}
});
}
//start from here
$(document).ready(function(){
$('.load-button').click(function(){
getUser();
});
});
channel.html
<script src="//connect.facebook.net/en_US/all.js"></script>// i add this line in channel.html
私は私の完全なを無駄にした後...このファイルに
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<img src="includes/fb-btn1.png" class="load-button" style="
width: 290px;
Height: 40px;
margin-top: 5px;"/>
あなたのコードの主な問題は、 'FB.login'を自動的に呼び出すことです。ポップアップは現在のブラウザでブロックされる可能性が非常に高いです。一般的な推奨事項は、このメソッドを明示的なユーザー対話でのみ呼び出すことです。リンク/ボタンをクリックしてログインをトリガーします。 – CBroe
この情報に感謝します。私はこれを試してみます。 –
Safariは非常に機密扱いのようです。 Clickハンドラの中の上記のコードでFB.getLoginStatusを呼び出すと同じことが起こります。 Safari Version 6.0.5(7536.30.1)でこれを体験しています。私はそのFB.loginは、ユーザーのクリックイベントによってトリガーされた/呼び出されたとしても、関数内で呼び出されるためだと思う... – Hans