You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Facebook登录出现Invalid scope错误,无法获取姓名邮箱权限

解决Facebook登录的Invalid Scope错误

首先直接点出问题核心:你代码里设置的"name"并不是Facebook认可的有效权限范围(scope),这就是触发Invalid scope错误的根本原因。

为什么会出现这个错误?

Facebook的权限体系里,不存在单独的name权限。用户的姓名信息(first_name、last_name)属于public_profile权限的覆盖范畴,而这个权限是默认包含在登录请求中的,不需要你手动声明。你只需要显式请求email这个单独的权限就足够了。

修正后的代码

把设置权限的那一行替换成下面的写法:

loginButton.setReadPermissions(Arrays.asList("email"));

如果你想显式声明public_profile(虽然没必要,但语法上完全合法),也可以写成:

loginButton.setReadPermissions(Arrays.asList("email", "public_profile"));

额外需要检查的配置项

  1. Facebook开发者后台配置:确保你在Facebook开发者平台的应用中,已经正确添加了Android平台,填写了匹配的包名、签名哈希值——这些基础配置错误也可能间接导致权限请求失败。
  2. 权限审核(正式上线场景):如果你的应用是面向普通用户的正式版本,email权限需要提交Facebook审核;但在测试沙盒模式下(使用测试账号登录),不需要审核就能直接获取该权限。

验证逻辑说明

修正权限后,你原本写的GraphRequest请求fields="id,email,first_name,last_name"是完全有效的:first_name和last_name会通过默认的public_profile权限返回,email则通过你显式请求的权限返回,这样就能正常拿到用户的邮箱、姓氏和名字信息了。

内容的提问来源于stack exchange,提问作者AAYUSH NAGPAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:40:58