今天发现新虫时真的很烦人。
基本上我想要做的是;显示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>
现在显示Javascript弹出窗口,但如果您单击好,转到应用程序按钮,它不会授予权限,甚至弹出窗口也不会消失。没有什么变化! 怪异
如果您从Facebook开发者部分的高级应用程序设置中禁用增强的身份验证对话,
PopUp样式更改:
当您单击“允许”按钮时,将抛出一个javascript错误: FB.Auth.setSession与OAuth2不兼容。
这是非常常见的错误。有一些提示不要得到我能找到的这个bug,但所有这些都没有用。 (例如;删除所有扩展名为all.js url - 我没有 - 或更改FB.init中的oauth参数 - 不再解决任何问题 - )
因此,唯一的解决方法是 - 不幸的是 - 通过重定向将权限对话框嵌入到页面中。如果有人可以获得JS SDK权限对话框,请告诉我。真的困在于图谱API页面中缺少文档。
答案 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/