2010-04-26 75 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> 

它将使你的生活变得更轻松,做最努力工作的你。