私はMVCアプリケーションへのログインにFacebook & Googleを使用しています。 Facebookはログインしていて、ユーザーの働きかけに関するデータを取得しています。 Googleのログインも機能していて、私はAccessTokenを受け取った場所の "ExternalLoginCallback"メソッドに当てはまります。ASP.NET MVC Identity GetExternalLoginInfoから与えられたAccessToken経由でGoogleにアクセスするユーザープロフィール
BUT - 「FacebookClient」という単純なナゲットパッケージは見つかりませんでした。ここではAccessTokenを渡すだけで、DBに保存したいユーザーの詳細を取得できます。
私はGoogleのような他のナゲットを見つけました:Google.Apis.Plus.v1ここで私はclientIdをもう一度渡す必要があります、secreatIdはX509Certificate2の資格情報を秘密にしていますので、 "FacebookClient"を提供する簡単な方法があれば教えてください。あなたがログインしているユーザーに関する情報をどのように取得するのか説明してください。ありがとうございました。
[AllowAnonymous]
public ActionResult Login(string provider)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties
{
RedirectUri = Url.Action("ExternalLoginCallback")
}, provider);
return new HttpUnauthorizedResult();
}
[AllowAnonymous]
public ActionResult ExternalLoginCallback()
{
var externalLoginInfo = HttpContext.GetOwinContext().Authentication.GetExternalLoginInfo();
var accessToken = externalLoginInfo.ExternalIdentity.Claims.FirstOrDefault(x => x.Type == "FacebookAccessToken")?.Value;
// HERE I WOULD LIKE TO HAVE FUNCTIONALITY SIMILAR TO FacebookClient
var client = new FacebookClient(accessToken);
dynamic facebookData = client.Get("me", new { fields = "email,name,first_name,last_name,gender,locale" });
}