【问题标题】:Meteor production app fail to use Facebook's user_friends permissionMeteor 制作应用无法使用 Facebook 的 user_friends 权限
【发布时间】:2016-04-21 15:40:06
【问题描述】:

我有一个移动流星应用程序,它使用 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 对现有用户的权限。

【问题讨论】:

    标签: android facebook cordova facebook-graph-api meteor


    【解决方案1】:

    显然我使用了 Meteor.loginWith 方法错误。它应该得到一个包含 requestPermissions 字符串数组的选项对象,像这样,问题就解决了:

            Meteor.loginWithFacebook({requestPermissions: ['user_friends']}, function(err){
                if (err){
                    throw new Meteor.Error("facebook failure");
                }
            });
    

    【讨论】:

      猜你喜欢
      • 2016-05-07
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多