Facebook Connect via Javascript不会关闭,也不会传递会话ID

时间:2010-04-26 18:20:11

标签: javascript python facebook

我正在尝试使用自定义Javascript按钮通过Facebook Connect对用户进行身份验证:

<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>

我可以验证用户身份。但是,在身份验证之后,弹出窗口将保持打开状态,并且主窗口不会指向任何位置。实际上,弹出窗口是“/ register / step2”

如何让登录窗口按预期关闭,并将facebook会话ID传递给/ register / step2?

谢谢!

4 个答案:

答案 0 :(得分:1)

看起来您可能正在使用旧的JS SDK(您的代码示例令人困惑,但onlogin处理程序让我认为您正在使用某些SDK)。帮个忙,切换到new JS SDK。然后使用XFBML and the <fb:login-button>

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

它将使您的生活更轻松,并为您完成大部分艰苦工作。

答案 1 :(得分: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阻止程序或类似的浏览器插件。你能发一些代码吗?

赖安

答案 2 :(得分:0)

问题是,您必须关闭弹出窗口并通过编码自行重新加载主窗口。

step by step tutorial来执行此操作。

答案 3 :(得分: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>

并添加一个url以获取xd_receiver并为其创建视图

希望这会对你有所帮助

由于

Ansh J