2010-04-26 74 views
3

我試圖驗證使用自定義JavaScript按鈕通過Facebook Connect用戶:Facebook連接不會關閉,並且不通過會話ID

<form> 
<input type="button" value="Connect with Facebook" onclick="window.open('http://www.facebook.com/login.php?api_key=XXXXX&extern=1&fbconnect=1&req_perms=publish_stream,email&return_session=0&v=1.0&next=http%3A%2F%2Fwww.example.com%2Fxd_receiver.htm&fb_connect=1&cancel_url=http%3A%2F%2Fwww.example.com%2Fregister%2Fcancel', '_blank', 'top=442,width=480,height=460,resizable=yes', true)" onlogin='window.location="/register/step2"' /> 
</form> 

我能夠對用戶進行認證。然而,在認證之後,彈出窗口保持打開狀態,並且主窗口不在任何地方。實際上,它是彈出窗口,進入「/註冊/步驟2」

我怎樣才能讓登錄窗口按預期方式關閉,並將facebook會話標識傳遞給/ register/step2?

謝謝!

+0

你是基於Facebook Connect的例子嗎?因爲「onlogin」禮貌似乎指出... Facebook Connect正在被放棄,並被Open Graph所取代 – 2010-04-26 18:57:35

+0

這是基於Facebook Connect。你有Open Graph的等價例子嗎? – ensnare 2010-04-26 19:38:43

回答

0

您的Facebook應用程序的設置是否設置爲重定向回到啓用Django的URL?舉例來說,在我的URLconf我:

url(r'^facebook/setup/$', facebook_complete_reg, name="facebook_setup"), 

的「facebook_complete_reg」視圖看起來Django的facebookconnect的源像the 'setup' view。我會使用該文件來確保您的「從Facebook返回」視圖執行正確的操作。

最後,確保您的模板加載了正確的JavaSript。在我的主模板,我有以下加載:

{% load facebook_tags %} 
{% facebook_js %} 
{% initialize_facebook_connect %} 

這將使您能夠使用模板標籤「show_connect_button」,這是我認爲你正在做的。

我能想到的唯一的另一種可能性是,您正在使用JavaScript攔截器或一些類似的瀏覽器插件。你可以發佈一些代碼嗎?

瑞安

0

的事情是,你已經關閉彈出窗口,並通過編碼刷新自己的主窗口。

有一個step by step tutorial要做到這一點。

0

可以使用xd_receiver.html文件與下面的代碼:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script> 

把它放在模板文件夾,然後在您想要的按鈕應該在你的應用頁面,把這段代碼:

<script src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"> 
    </script> 
    <script type="text/javascript"> 
     FB.init("API_KEY", "/xd_receiver.html",{ permsToRequestOnConnect : "email,publish_stream,photo_upload,offline_access" }); 

    function facebook_login() { 
     window.location ="/register/step2" 
    } 
    </script> 
    <fb:login-button onlogin="facebook_login();"></fb:login-button> 

並添加一個網址以獲得xd_receiver併爲其創建視圖

希望這會幫助你

感謝

ANSHĴ

1

看起來你可能會使用舊的JS SDK(您的代碼示例是混亂的,但onlogin處理程序讓我覺得你使用的是一些SDK)。幫你一個忙,並切換到new JS SDK。然後使用XFBML and the <fb:login-button>

<fb:login-button perms="read_stream"></fb:login-button> 

它將使你的生活變得更輕鬆,做最努力工作的你。