1
내 앱의 사용자 정보를 반환하기 위해 Facebook Graph API를 사용하고 있습니다. 지금까지 확장 된 속성으로 이메일을 가져올 필요가 있었으며 결코 문제가 없었습니다. 그러나 이제는 사용자 생일을 가져야하지만 예상대로 작동하지 않습니다. 널 값을 얻고 있습니다. 여기Facebook 그래프 API가 속성을 반환하지 않습니다. user_birthday
은 내가 얻을 내가 응답을 역 직렬화 할 때
using DotNetOpenAuth.OpenId;
using DotNetOpenAuth.OAuth2;
namespace Contoso.Web.Mvc.Controls.Authentication.IdentityProviders
{
public class FacebookIdentityProvider : IdentityProvider
{
public override ActionResult Authenticate(Func<LoginParameters, ActionResult> CallbackFunction)
{
var authorization = fbClient.ProcessUserAuthorization();
var urlHelper = new UrlHelper(System.Web.HttpContext.Current.Request.RequestContext);
if (authorization == null && String.IsNullOrWhiteSpace(Parameters.AccessToken))
{
//Kick off authorization request
fbClient.RequestUserAuthorization(scope: new string[] { "email", "user_birthday"});
}
else
{
if(authorization != null)
Parameters.AccessToken = authorization.AccessToken;
var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(Parameters.AccessToken));
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
var graph = FacebookGraph.Deserialize(responseStream);
var user = GetUser(graph);
var requiresExtraInformation = false;
DoFormAuthenticationAndCreateUserIfNeeded(user, out requiresExtraInformation);
if (requiresExtraInformation)
{
return RedirectToExtraInformationPage(user);
}
return CallbackFunction(Parameters);
}
}
}
return new RedirectResult(urlHelper.Action("Index"));
}
}
[DataContract]
public class FacebookGraph
{
private static DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(FacebookGraph));
[DataMember(Name = "id")]
public long Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "first_name")]
public string FirstName { get; set; }
[DataMember(Name = "last_name")]
public string LastName { get; set; }
[DataMember(Name = "email")]
public string Email { get; set; }
[DataMember(Name = "gender")]
public string Gender { get; set; }
[DataMember(Name = "user_birthday")]
public string UserBirthday { get; set; }
public static FacebookGraph Deserialize(string json)
{
if (string.IsNullOrEmpty(json))
{
throw new ArgumentNullException("jsonStream");
}
return Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(json)));
}
public static FacebookGraph Deserialize(Stream jsonStream)
{
if (jsonStream == null)
{
throw new ArgumentNullException("jsonStream");
}
return (FacebookGraph)jsonSerializer.ReadObject(jsonStream);
}
}
}
내가 페이스 북에서 얻는 정보를 I는 사용자의 생일을 제외하고 필요로하는 모든 정보를 반환하는 데 사용하는 클래스의 일부이다 (이 널 (null)로 나타납니다) . 나는 체크하고 나의 페이스 북 프로필에는 사용자 생일이있다.
테스트 할 사용자에 대한 정보를 공유 했습니까? –