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

本文关键字:v2 API 获取 用户 facebook asp net 编码 | 更新日期: 2023-09-27 18:16:04

asp.net c#代码用来获取用户邮箱所在的权限甚至我检查应用程序的权限在我的facebook账户批准的项目电子邮件是真的我能做什么,是否有任何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; }
}

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

可能有两种原因:

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

2。你没有明确地请求电子邮件字段在v2.4的图形API
自从Graph API的v2.4版本推出以来,Facebook改变了Graph API调用的默认响应,以返回更少的字段。这一变化是为了减少数据使用等(例如移动设备)。现在您必须显式地请求您想要的字段(如果它们不包含在默认响应中)。

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

关于v2.4的更多更改可以在Graph API更改日志中找到。

变化

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

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

其他变量的语法,如UserName, name等…可参考

https://developers.facebook.com/docs/facebook-login/permissions

的例子:

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