首页 > 解决方案 > Facebook Graph 未检索到电子邮件地址

问题描述

我在网站上使用 Facebook 登录,目前它没有检索电子邮件地址我已将 Facebook Graph API 端点版本从 v9.0 更新到 v11.0,我还在 App Review 部分请求了电子邮件和 public_profile 权限,如下图所示,但它仍然只检索 (id,name,first_name,last_name ) 并且电子邮件为空 这是处理 Facebook Graph API 的 VB.NET 代码

 Public Sub GetUserData(ByVal FacebookAppId As String, ByVal FacebookAppSecret As String, ByVal RedirectURL As String, ByVal Code As String)
    
    Dim targetUri As Uri = New Uri("https://graph.facebook.com/v11.0/oauth/access_token?client_id=" & FacebookAppId & "&client_secret=" & FacebookAppSecret & "&redirect_uri=" & RedirectURL & "&code=" & Code)
    Dim at As HttpWebRequest = CType(HttpWebRequest.Create(targetUri), HttpWebRequest)
    Dim str As System.IO.StreamReader = New System.IO.StreamReader(at.GetResponse().GetResponseStream())
    Dim token As String = str.ReadToEnd().ToString().Replace("access_token=", "")
    Dim combined As String() = token.Split(""""c)
    Dim accessToken As String = combined(3)
     
    Dim url As String = "https://graph.facebook.com/v11.0/me?fields=id%2Cname%2Cemail%2Cfirst_name%2Clast_name&access_token=" & accessToken.Trim(""""c) & ""
    Dim request As WebRequest = WebRequest.Create(url)
    request.ContentType = "application/json"
    request.Method = "GET"
    Dim userInfo As StreamReader = New StreamReader(request.GetResponse().GetResponseStream())
    Dim jsonResponse As String = String.Empty
    jsonResponse = userInfo.ReadToEnd()
    Dim sr As JavaScriptSerializer = New JavaScriptSerializer()
    Dim jsondata As String = jsonResponse
    Dim converted As FacebookUserData = sr.Deserialize(Of FacebookUserData)(jsondata)

    userId = converted.id
    userName = converted.name
    userFirstName = converted.first_name
    userLastName = converted.last_name
    userEmail = converted.email



End Sub

权限和功能图片

这是登录按钮

Protected Sub btnFBSignIn_Click(sender As Object, e As EventArgs) Handles btnFBSignIn.Click


    Dim fbAppId As String = "AppID"
    Dim fbUrllRedirect = "https://mywebsite.com/Login"
    Dim fbApiUrl As String = "https://www.facebook.com/v11.0/dialog/oauth/?client_id=" & fbAppId & "&redirect_uri=" & fbUrllRedirect & "&response_type=code&state=1"
    Response.Redirect(fbApiUrl)




End Sub

标签: asp.netvb.netfacebookfacebook-graph-apifacebook-login

解决方案


推荐阅读