C# 无法使用asp.net c编码从facebook api v2.4获取用户电子邮件

C# 无法使用asp.net c编码从facebook api v2.4获取用户电子邮件,c#,asp.net,facebook,C#,Asp.net,Facebook,asp.net c代码用于获取授予访问权限的用户电子邮件 即使我在我的facebook帐户中检查应用程序权限,approved items电子邮件也是真实的 我能做什么,Facebook是否有任何关于此的设置,以在我的Facebook应用程序中检索用户电子邮件,或者代码中有任何错误 using ASPSnippets.FaceBookAPI; using System.Web.Script.Serialization; protected void Login(object sender,

asp.net c代码用于获取授予访问权限的用户电子邮件 即使我在我的facebook帐户中检查应用程序权限,approved items电子邮件也是真实的 我能做什么,Facebook是否有任何关于此的设置,以在我的Facebook应用程序中检索用户电子邮件,或者代码中有任何错误

using ASPSnippets.FaceBookAPI;
using System.Web.Script.Serialization;

  protected void Login(object sender, EventArgs e)
    {
        FaceBookConnect.Authorize("user_photos,email", Request.Url.AbsoluteUri.Split('?')[0]);
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        FaceBookConnect.API_Key = "753961091398319";
        FaceBookConnect.API_Secret = "secretkey";

            string code = Request.QueryString["code"];
            if (!string.IsNullOrEmpty(code))
            {
                string data = FaceBookConnect.Fetch(code, "me");
                FaceBookUser faceBookUser = new JavaScriptSerializer().Deserialize<FaceBookUser>(data);
                faceBookUser.PictureUrl = string.Format("https://graph.facebook.com/{0}/picture", faceBookUser.Id);



                lblId.Text = faceBookUser.Id;
                lblUserName.Text = faceBookUser.UserName;
                lblName.Text = faceBookUser.Name;
                lblEmail.Text = faceBookUser.Email;
                ProfileImage.ImageUrl = faceBookUser.PictureUrl;
                    btnLogin.Enabled = false;

            }
        }

}
public class FaceBookUser
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string UserName { get; set; }
    public string PictureUrl { get; set; }
    public string Email { get; set; }
}

可能有两个原因:

一,。facebook上没有该帐户的有效电子邮件地址 这可能意味着文件中没有该用户的有效电子邮件地址。原因可能各不相同,可能是发送到此地址的电子邮件被退回,用户从未重新验证过

二,。您没有在Graph API的v2.4中明确请求电子邮件字段 自从Graph API的v2.4版本推出以来,Facebook更改了Graph API调用的默认响应,以返回更少的字段。进行此更改是为了减少数据使用等,例如移动设备。如果默认响应中没有包含所需的字段,则必须显式请求这些字段

例如,您可以通过在请求中传递字段参数来实现这一点https://graph.facebook.com/v2.4/me?fields=email,将返回该用户的名称和电子邮件的名称

有关v2.4更改的更多信息,请参见。

更改

string data = FaceBookConnect.Fetch(code, "me")

其他变量的语法,如用户名、名称等。。。可咨询

例如:

string data = FaceBookConnect.Fetch(code, "me?fields=email,first_name,last_name");
string data = FaceBookConnect.Fetch(code, "me?fields=email,first_name,last_name");