FB.ui permissions.request无法正常工作

时间:2011-12-27 18:39:49

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

今天发现新虫时真的很烦人。

基本上我想要做的是;显示Facebook对话框并获取应用程序所需的权限并运行回调js功能。但无法实现这个简单且最重要的应用程序部分。

首先,让我们初始化它:

<div id="fb-root"></div>
<script type="text/javascript">

    window.fbAsyncInit = function()
    {

        FB.init({appId: '135814169854494', status: true, cookie: true, xfbml: true, oauth: true });

        FB.ui({method: "permissions.request", "perms": 'publish_stream,user_about_me,email,user_birthday,user_likes'} , function(response) { console.log(response); });

    };
    (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
        '//connect.facebook.net/<?=$__FBLocal?>/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());
</script>

enter image description here

现在显示Javascript弹出窗口,但如果您单击好,转到应用程序按钮,它不会授予权限,甚至弹出窗口也不会消失。没有什么变化! 怪异

如果您从Facebook开发者部分的高级应用程序设置中禁用增强的身份验证对话

enter image description here

PopUp样式更改:

enter image description here

当您单击“允许”按钮时,将抛出一个javascript错误: FB.Auth.setSession与OAuth2不兼容。

这是非常常见的错误。有一些提示不要得到我能找到的这个bug,但所有这些都没有用。 (例如;删除所有扩展名为all.js url - 我没有 - 或更改FB.init中的oauth参数 - 不再解决任何问题 - )

因此,唯一的解决方法是 - 不幸的是 - 通过重定向将权限对话框嵌入到页面中。如果有人可以获得JS SDK权限对话框,请告诉我。真的困在于图谱API页面中缺少文档。

2 个答案:

答案 0 :(得分:0)

首先,我建议创建另一个Facebook应用程序以获取新的Facebook ID并使用它进行测试。如果它有效,那么facebook的原始facebook应用程序数据的存储区域内的某些内容就会损坏。如果它不起作用,那么您有一个可重现的错误,您可以通过他们的错误跟踪工具向Facebook报告。

答案 1 :(得分:0)

我很确定不赞成使用permissions.request。您可以尝试使用method: oauth代替permissions.request吗?此外,perms参数需要更改为scope。见https://developers.facebook.com/docs/reference/dialogs/oauth/