You need to enable JavaScript to run this app. Facebook Graph API v11.0登录无法获取用户邮箱问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Facebook Graph API v11.0登录无法获取用户邮箱问题求助

问题原因

你无法获取用户邮箱的核心原因是OAuth授权请求未声明需要email权限,即Facebook登录跳转的链接中缺少scope参数,用户授权时不会弹出邮箱权限申请提示,自然无法获取对应字段。

修复步骤

1. 修正登录跳转的OAuth请求参数

在btnFBSignIn_Click方法的OAuth链接中新增scope参数,明确申请email和public_profile权限,修改后代码如下:

Protected Sub btnFBSignIn_Click(sender As Object, e As EventArgs) Handles btnFBSignIn.Click
    Dim fbAppId As String = "AppID"
    Dim fbUrllRedirect = "https://mywebsite.com/Login"
    ' 新增scope参数,声明需要的权限
    Dim fbApiUrl As String = "https://www.facebook.com/v11.0/dialog/oauth/?client_id=" & fbAppId & "&redirect_uri=" & fbUrllRedirect & "&response_type=code&state=1&scope=email,public_profile"
    Response.Redirect(fbApiUrl)
End Sub

2. 优化access_token解析逻辑(可选但推荐)

你当前通过字符串分割提取access_token的方式兼容性较差,Facebook OAuth接口返回的access_token响应为标准JSON格式,建议使用JavaScriptSerializer解析获取token,避免版本更新后解析失败:

' 原access_token解析部分替换为以下逻辑
Dim str As System.IO.StreamReader = New System.IO.StreamReader(at.GetResponse().GetResponseStream())
Dim tokenJson As String = str.ReadToEnd()
Dim tokenObj As Object = New JavaScriptSerializer().Deserialize(Of Object)(tokenJson)
Dim accessToken As String = tokenObj("access_token").ToString()

3. 其他排查点

  • 确认你使用的测试Facebook账号已绑定并验证了有效邮箱,未验证邮箱、仅用手机号注册的账号会返回空email字段
  • 若App Review的email权限仍在审核中,仅你在Facebook后台配置的测试用户可以返回邮箱,正式用户暂无法获取
  • 确认FacebookUserData类中email字段的命名和JSON返回字段完全一致,不存在大小写或者拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 10:15:04