我正在构建一个简单的应用程序,用户可以通过Facebook登录并为产品撰写评论。当我使用publish_actions
扩展权限范围进行初始登录时,登录对话框会在basic_info
步骤后冻结。
这里有一个更详细的解释:
publish_actions
范围。 basic_info
权限屏幕,说明该APP将收到以下信息:您的公开个人资料和好友列表。' 如果我关闭Facebook登录窗口并再次单击“登录”按钮,我会看到扩展权限对话框,我可以完成登录。完成登录后,我可以继续,我的应用程序的其余部分按预期工作。
我已经检查了控制台是否有错误,Facebook登录窗口或我的应用程序窗口都没有。
我还尝试使用Facebook登录按钮,并将FB.login
附加到元素。两种方法都产生相同的结果。在基本权限步骤上单击“确定”后,登录对话框将冻结。
关于如何使其登录对话的任何想法都会进入最终的扩展权限步骤?
JS
// Additional JS functions here
window.fbAsyncInit = function() {
FB.init({
appId : 'MY APP ID',
status : true,
cookie : true,
xfbml : true
});
};
// Load the SDK Asynchronously
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
答案 0 :(得分:1)
在尝试其他一些事情时偶然发现了一个解决方案。
我正在使用Facebook登录按钮:
<div
id="fblogin"
class="fb-login-button"
data-show-faces="false"
data-width="200"
data-max-rows="1"
data-scope="publish_actions"
login_text="Login to Review" >
</div>
这将打开Facebook登录对话框,但会在初始权限步骤后停止,并且不会继续我请求的扩展权限。
事实证明,如果我在用户点击按钮时调用FB.login
来劫持Facebook登录,并添加return: false;
权限对话框就可以正常工作。
$('#fblogin').click(function(){
FB.login(function() {
}, {scope: 'publish_actions'});
return false;
});
问题解决了!