我有一个使用Facebook API的移动流星应用程序,并使用accounts-facebook包管理用户身份验证和注册。
只要我在meteor.com服务器和本地版本上测试应用程序,我提供的以下代码成功使应用程序使用Facebook的user_friends权限:
(那是在client / accounts.js下)
Accounts.ui.config({
requestPermissions: {
facebook: ['user_friends']
}
});
然而,自从我使用mup部署到生产环境后,似乎user_friends权限不再对Facebook本身生效。浏览我的MongoDB我可以看到,在 db.meteor_accounts_loginServiceConfiguration 集合中,Facebook的文档是:
{
_id: "gCMyTCnTXq3RTPMWm",
service: "facebook",
appId: "*********", // censored
loginStyle: "redirect",
secret: "***************************", // censored
requestPermissions: [
"user_friends"
]
}
因此,Meteor应用程序知道它应该向新用户请求此权限。看看我的Facebook帐户应用程序隐私设置,我可以看到,与我的非生产版本相比,我的应用程序不再有“用户朋友”权限:
由于它是移动应用,我尝试编辑 accounts-config.js 以包含权限:
ServiceConfiguration.configurations.upsert(
{ service: "facebook" },
{
$set: {
appId: "***********", // censored
loginStyle: "redirect",
secret: "********************************", // censored
requestPermissions: ['user_friends']
}
}
);
因为我有自定义登录按钮,所以在点击它时也会这样做:
Meteor.loginWithFacebook(['user_friends']);
但是没有成功检索权限。每次我做这些更改时,我都会从我的Facebook帐户中删除用户和应用程序,并再次尝试从新的Facebook登录,以避免您无法覆盖Facebook对现有用户的权限。
答案 0 :(得分:0)
显然我使用了Meteor.loginWith方法错误。它应该得到一个包含requestPermissions字符串数组的选项对象,问题解决了:
Meteor.loginWithFacebook({requestPermissions: ['user_friends']}, function(err){
if (err){
throw new Meteor.Error("facebook failure");
}
});