Facebook SDK for .NET 반환 값으로 형식 지정 사용
개요
Facebook SDK for .NET 에서는, GetTaskAsync()등으로 유저의 프로필 정보등을 취득할 수 있습니다만, 형태를 아무것도 지정하지 않으면 dynamic형으로 돌려주어집니다. dynamic 형은 편리합니다만, Visual Studio등의 IDE에서는 인텔리센스를 사용할 수 없습니다.
후속 유닛 테스트나 개발 효율도 생각하면 반환값에 형을 갖게 하는 것이 좋기 때문에, 그렇게 구현하는 방법을 소개합니다.
구현이 끝나면 아래 그림과 같이 인텔리센스가 효과가 있게 됩니다.
구현 방법
Facebook Graph API에서 자신의 프로필(/me)을 가져올 때 형식 지정을 이용해 봅니다.
우선 반환값을 받는 클래스를 정의한다.
우선은 반환값을 포함하는 클래스를 정의합니다.
Facebook Graph API 참조 를 참고로, API 반환값에 어떠한 필드가 있는지를 확인해, 그에 따른 클래스를 정의합니다.
자신의 프로파일(/me)의 경우, Graph API로부터는 User 객체 가 돌려주므로, 거기에 응한 필드를 적절히 정의합니다.
public class AboutMeResult
{
public string first_name { get; set; }
public string last_name { get; set; }
public string gender { get; set; }
public string id { get; set; }
public string name { get; set; }
public string email { get; set; }
public UserPicture picture { get; set; }
public List<WorkExperience> work { get; set; } = new List<WorkExperience>();
}
public class WorkExperience
{
public string id { get; set; }
public string description { get; set; }
public Page employer { get; set; }
public Page location { get; set; }
public string start_date { get; set; }
public string end_date { get; set; }
public Page position { get; set; }
}
public class UserPicture
{
public ProfilePicture data { get; set; }
}
public class ProfilePicture
{
public int height { get; set; }
public int width { get; set; }
public bool is_silhouette { get; set; }
public string url { get; set; }
}
public class Page
{
public string id { get; set; }
public string name { get; set; }
public string description { get; set; }
public string link { get; set; }
}
API 호출 결과를 정의한 클래스로 채우고 반환
그리고는, FacebookClient에서의 GetTaskAsync() 호출시에 위에서 정의한 AboutMeResult 클래스를 건네줍니다.
그러면 AboutMeResult 클래스의 인스턴스가 반환됩니다.
using Facebook;
var client = new FacebookClient(facebookAccessToken);
var myself = await client.GetTaskAsync<AboutMeResult>(
"/me"
, new { fields = "first_name,last_name,gender,id,name,email,work,picture.width(999)", locale = "ja_JP" }
);
// myselfはAboutMeResultのインスタンス。myself.last_name みたいにアクセス出来るし、インテリセンスも効く
참고 정보
Facebook Graph API에서 자신의 프로필(/me)을 가져올 때 형식 지정을 이용해 봅니다.
우선 반환값을 받는 클래스를 정의한다.
우선은 반환값을 포함하는 클래스를 정의합니다.
Facebook Graph API 참조 를 참고로, API 반환값에 어떠한 필드가 있는지를 확인해, 그에 따른 클래스를 정의합니다.
자신의 프로파일(/me)의 경우, Graph API로부터는 User 객체 가 돌려주므로, 거기에 응한 필드를 적절히 정의합니다.
public class AboutMeResult
{
public string first_name { get; set; }
public string last_name { get; set; }
public string gender { get; set; }
public string id { get; set; }
public string name { get; set; }
public string email { get; set; }
public UserPicture picture { get; set; }
public List<WorkExperience> work { get; set; } = new List<WorkExperience>();
}
public class WorkExperience
{
public string id { get; set; }
public string description { get; set; }
public Page employer { get; set; }
public Page location { get; set; }
public string start_date { get; set; }
public string end_date { get; set; }
public Page position { get; set; }
}
public class UserPicture
{
public ProfilePicture data { get; set; }
}
public class ProfilePicture
{
public int height { get; set; }
public int width { get; set; }
public bool is_silhouette { get; set; }
public string url { get; set; }
}
public class Page
{
public string id { get; set; }
public string name { get; set; }
public string description { get; set; }
public string link { get; set; }
}
API 호출 결과를 정의한 클래스로 채우고 반환
그리고는, FacebookClient에서의 GetTaskAsync() 호출시에 위에서 정의한 AboutMeResult 클래스를 건네줍니다.
그러면 AboutMeResult 클래스의 인스턴스가 반환됩니다.
using Facebook;
var client = new FacebookClient(facebookAccessToken);
var myself = await client.GetTaskAsync<AboutMeResult>(
"/me"
, new { fields = "first_name,last_name,gender,id,name,email,work,picture.width(999)", locale = "ja_JP" }
);
// myselfはAboutMeResultのインスタンス。myself.last_name みたいにアクセス出来るし、インテリセンスも効く
참고 정보
Reference
이 문제에 관하여(Facebook SDK for .NET 반환 값으로 형식 지정 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/katz/items/82e7fe823c3a18aeb71d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)