Flutter应用Facebook登录无法获取邮箱权限问题求助
解决Flutter Facebook登录无法获取邮箱及权限审核问题
一、先修复代码中的权限配置
默认权限仅包含public_profile,无法获取邮箱,需显式添加email权限并指定获取字段:
- 修改登录请求代码:
final LoginResult result = await FacebookAuth.instance.login( permissions: ['public_profile', 'email'], // 显式添加email权限 );
- 获取用户数据时指定需要的字段:
if (result.status == LoginStatus.success) { // 明确请求name和email字段 final userData = await FacebookAuth.instance.getUserData( fields: "name,email", ); print("姓名: ${userData['name']}, 邮箱: ${userData['email']}"); }
二、Facebook后台配置与权限审核问题
1. 开发模式下测试方案
开发模式下普通用户无法获取未审核的权限,需使用测试用户测试:
- 进入Facebook应用后台 → 「角色」→「测试用户」
- 创建测试用户,用该账号登录你的应用,此时能正常获取邮箱(无需审核)
2. 申请email权限审核的正确路径
若要让内部测试成员(非测试用户)或正式用户获取邮箱,需提交审核:
- 进入Facebook应用后台 → 「应用审核」→「权限和功能」
- 在搜索框输入
email,找到该权限后点击「请求审核」 - 按照要求填写:
- 说明获取邮箱的具体用途(如身份验证、发送订单通知等,需具体明确)
- 确保已完成商家资质验证及数据保护问卷的正确填写
3. 内部测试阶段的权限生效条件
- 若应用处于「上线模式」但未发布,需将测试成员添加到「测试人员」列表(后台「测试」→「内部测试」)
- 权限审核通过后,内部测试成员登录时就能获取到邮箱
三、常见排查点
- 确认用户登录时是否弹出了「请求访问邮箱」的授权窗口,若未弹出,检查代码中
permissions参数是否正确传递 - 若开发模式下测试用户仍无法获取邮箱,检查Facebook应用后台的「设置」→「基本」中,是否正确配置了应用的包名、签名哈希值
内容的提问来源于stack exchange,提问作者Kram
相关产品推荐
相关产品推荐

