0

基本的に、私は自分のウェブサイトの Facebook ログインフローに取り組んでいます。それはかなり基本的なことですが、私にいくつかの問題を与えています。この問題は、クリック オブザーバーが一部の時間だけ機能しているように見えます。通常、ハード リフレッシュを行うと問題が解決します。以下は、それに入るために使用される私のJSコードです...

function fb_login(login_destination)
{
    FB.login(function(response) {
        if (response.authResponse) {
            var fb_auth_token = response.authResponse.accessToken;
            var fb_user_id = response.authResponse.userID;  
            var url =  '/login/ajax/fb_login.php?fb_auth_token=' + fb_auth_token + '&fb_user_id=' + fb_user_id + '&fb_login=' + login_destination;
            window.location = url;
        }
    }, {scope: 'email,user_about_me'});
}

document.observe("dom:loaded", load_fb);
function load_fb()
{
    window.fbAsyncInit = function(){
        FB.init({
            appId      : 'ID'    
            status     : true, 
            cookie     : true,
            xfbml      : true,
            oauth      : true
        });
    }; 

    $('fb_connect').observe('click',function(event){
        var login_destination = $('fb_connect').getAttribute('dest');
        fb_login(login_destination);
    });
}

唯一の症状は、特定のページの読み込みでクリックに反応しないことです。私が使用している ID は、画像自体に直接関連付けられています。誰かがこれに遭遇し、それを修正する方法を知っているかどうか興味があります. ありがとう。

4

2 に答える 2

0

だから、私はこれを修正することになりました。コードは事実上これに変更されました...。

function load_fb()
{   
    var d = document;
    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);

基本的に、ページが読み込まれるまでFB JS SDKを取り込むのを待っています(これについては、以前のコードを参照してください)。それはscriptaculousとは何の関係もありません。

于 2012-09-06T16:56:30.550 に答える
0

私は前にこれに遭遇しました。結局、タイマーを使用して初期化スクリプトをバックアップとして開始しました。関数は変数を設定し、既に実行されている場合は終了します。醜いが効果的。

于 2012-09-05T21:04:02.840 に答える