gpt4 book ai didi

facebook - Firebase Facebook 身份验证 - 重新请求权限

转载 作者:行者123 更新时间:2023-12-03 06:25:11 27 4
gpt4 key购买 nike

当用户通过 Facebook 进行身份验证时,他们可以选择拒绝所请求的权限。

Facebook 允许我们通过添加以下内容来重新请求权限:auth_type: 'rerequest' ( https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.0#re-asking-declined-permissions )

我找不到重新请求最初使用 Firebase 拒绝的权限的方法。

有谁知道怎么做吗?

贾罗德

最佳答案

更新:最佳解决方法

Facebook 登录:用户单击“使用 Facebook 登录”按钮并拒绝所需的权限或在 Facebook 弹出登录窗口中选择“不再”。用户已登录您的网站,但您希望确保用户授予您所需的权限。

在您的signInSuccess回调中:如果用户登录并拒绝您的权限,您应该立即从您的Facebook应用中删除您的用户。

然后立即注销您的用户;强制再次尝试登录。

用户将尝试再次登录,Facebook 将再次请求权限。这将持续到用户允许或放弃为止。这就是我正在运行的内容。

var usersFacebookToken = credential.accessToken;
var fbPermissionsUrl = `https://graph.facebook.com/me/permissions?access_token=${usersFacebookToken}`

$http.get(fbPermissionsUrl)
.then(function(response) {
let facebookPerms = response.data.data;

facebookPerms.forEach(function(item) {
if (item.permission === 'email' && item.status === 'declined' || item.permission === 'user_posts' && item.status === 'declined') {
console.log(`${item.permission} denied`)
// remove user from my facebook app

$http({
method: 'POST',
url: `https://graph.facebook.com/me/permissions?method=delete&access_token=${fbUserAccessToken}`
}).then(function successCallback(response) {
// this user has been deleted from the FACEBOOK APP
// when user does Facebook login/signup again
// then permissions will be requested again
return true;

}, function errorCallback(error) {
// called asynchronously if an error occurs
// or server returns response with an error status.
console.error(error)
});

alert("Email and user posts history are required")
delete $scope.currentUser;
firebase.auth().signOut();
}
})

});

上一页

我已经实现了 customParameters,它们确实会传递给 Facebook,但即使在使用 auth_type: 'reauthenticate' 或 auth_type: 'rerequest' 时,也不会再次提示用户允许权限

我将考虑从我的 Facebook 应用程序中删除用户,然后再次提示登录。引用此线程:Is there a way to delete users for your Facebook Application?直到那时...

解决方法:让用户删除您在 Facebook 注册的应用,然后再次登录您的网站。然后系统将提示用户通过范围授权您请求的任何权限。

将用户引导至此处,让他们找到您的应用程序,然后单击模式底部的小字体中的“删除应用程序”: https://www.facebook.com/settings?tab=applications

这是传递自定义参数的引用:检查Github上的链接:https://github.com/firebase/firebaseui-web#configure-oauth-providers

    {
provider: firebase.auth.FacebookAuthProvider.PROVIDER_ID,
scopes: [
'public_profile',
'email',
'user_likes',
'user_friends'
],
customParameters: {
// Forces password re-entry.
auth_type: 'reauthenticate'
}
},

以下是我如何指示用户删除 Facebook 上的应用

  1. 第 1 步 - 转到此链接
  2. 第 2 步 - 找到应用 TEFL.pro
  3. 第 3 步 - 点击模式底部的“删除应用”
  4. 第 4 步 - 再次使用 Facebook 登录

是的,我知道用户不会执行此操作,但在 FirebaseUI 正确重新请求权限之前,我将采用此路线。如果我失去了一个从一开始就没有授权所需权限的用户,那就这样吧。我在这里采用帕累托原理

Facebook List of Apps

Click remove app

关于facebook - Firebase Facebook 身份验证 - 重新请求权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28534036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com