Auth0处理拒绝了权限

时间:2016-06-15 12:16:45

标签: javascript facebook-sdk-4.0 auth0

我的Auth0帐户使用facebook(和其他人)登录。

  • 当用户第一次批准fb应用程序时,他必须批准权限(例如电子邮件)。
  • 用户可以取消选中该电子邮件,拒绝电子邮件权限。
  • 他仍然批准申请,但不是这个许可。

我在Auth0规则中检测到这一点并且登录失败,但当用户再次点击登录时,他没有看到Facebook批准屏幕,也无法重新批准电子邮件权限。

简而言之,用户被卡住了!唯一的解决方案是从用户手动删除应用程序。

有什么想法吗?

取得一些进展:

我发现facebook sdk支持auth_type:“rerequest” 但是如何将它传递给Auth0?

2 个答案:

答案 0 :(得分:2)

尝试使用prompt=consent作为查询字符串中的附加参数。如果您使用的是锁:

auth0Lock.show({ 
...
authParams: { scope: 'openid offline_access', prompt:'consent' 
},
... 
})

答案 1 :(得分:2)

终于解决了!

从auth0支持获得了一些帮助

我们需要设置

prompt: 'consent'

这里有两个例子:

使用Auth0Lock(widget)对象:

auth0Lock.show({
  callbackURL: window.location.href,   //where to go back. must allow this url in dashboard
  responseType: 'token', //this will cause the hash to return the token
  authParams: {
    scope: 'openid offline_access',
    prompt: 'consent'   // THIS WILL ASK THE USER TO APPROVE THE PERMISSIONS THAT HE DECLINED EARLIER 
  },
  connection_scopes: {
    'facebook': ['public_profile', 'email'],    //this optional this this example
  }

});

使用Auth0对象:

auth0.login({
      popup: true,  // to use popup and js callback or redirect with hashtag
      connection: 'facebook',
      state:"some_state"
      scope: 'openid offline_access',
      prompt: 'consent'
    },
    //if popup=true then will callback
    function (err, profile, id_token, access_token, state, refreshToken) {
      if (err) {
        console.log("err", err);
      } else {
        console.log(id_token);
      }
    });