私のウェブサイトには、次のコードを持つ 2 つの Facebook 接続ボタンがあります。
<div id="fb-root"></div>
{literal}
<script>
window.fbAsyncInit = function() {
FB.init({
appId: {/literal}{$fb_app_id}{literal},
cookie: true,
xfbml: true,
oauth: true
});
FB.Event.subscribe('auth.login', function(resp) {
window.location.reload();
});
};
(function() {
var e = document.createElement('script'); e.async = false;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
{/literal}
<a class="facebook-connect" href="#" onclick="fb_login();return false;">facebook connect</a>
{literal}
<script>
function fb_login(){
FB.login( function( response) {
if( response.authResponse){
// dont do anything, it will reload the page
window.location.reload();
}
else // user cancelled facebook connect
{
return false;
}
}, {scope : 'email, user_about_me, user_birthday, user_location, friends_about_me, publish_actions, offline_access '});
}
その後、同じFacebook接続ボタンがありますが、クラスが異なります。
<a class="facebook" href="" >facebook connect</a>
FB.init
ただし、2 番目のクラスでは、 js-sdk を async でロードするようにしたくありません。だから、私はこのコードを使用しました。
$('.facebook').click( function(){
$('.facebook-connect').click();
});
ただし、.facebook
ボタンをクリックすると、ダイアログが表示され、facebook はログイン資格情報 (電子メール/パスワード) を要求します。その後、ダイアログは空白になります。何か案は ?