簡體   English   中英

無法使用asp.net C#編碼從facebook api v2.4獲取用戶電子郵件

[英]unable to get user email from facebook api v2.4 using asp.net c# coding

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; }
}

可能有兩個原因:

1. Facebook上該帳戶沒有有效的電子郵件地址
這可能意味着該用戶根本沒有有效的電子郵件地址。 造成這種情況的原因可能有所不同,可能是該地址的電子郵件被退回,而用戶從未重新驗證過。

2.您並未明確要求Graph API v2.4中的email字段
由於引入了Graph API v2.4,Facebook更改了Graph API調用的默認響應以返回較少的字段。 進行了此更改以減少數據使用量等(例如,用於移動設備)。 現在,您必須顯式請求所需的字段(如果默認響應中未包含這些字段)。

您可以通過在請求中輸入fields參數來完成此操作,例如https://graph.facebook.com/v2.4/me?fields=email,name ,它將返回該用戶的名稱和電子郵件。

可以在Graph API changelog中找到有關v2.4更改的更多信息。

更改

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

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

其他變量(如用戶名,名稱等)的語法可以在

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

例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM