OAuth jest do uwierzytelniania tylko, czyli uzyskanie dostępu znak. Po uzyskaniu tego tokena dostępu można go użyć do pobrania tych informacji od usługodawcy. Zapoznaj się z dokumentacją dostawcy, aby zobaczyć, jak można to zrobić.
Istnieje kilka roszczeń, które można pobrać, takich jak FirstName i LastName, ponieważ są one standardowe i większość dostawców je obsługuje. Na przykład wewnątrz ExternalLoginCallback
zwrotnego można próbować odzyskać tę informację ze słownika result.ExtraData
:
[AllowAnonymous]
public ActionResult ExternalLoginCallback(string returnUrl)
{
AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
if (!result.IsSuccessful)
{
return RedirectToAction("ExternalLoginFailure");
}
if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
{
return RedirectToLocal(returnUrl);
}
if (User.Identity.IsAuthenticated)
{
// Here you could use result.ExtraData dictionary
string name = result.ExtraData["name"];
// If the current user is logged in add the new account
OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name);
return RedirectToLocal(returnUrl);
}
else
{
// User is new, ask for their desired membership name
string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId);
ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName;
ViewBag.ReturnUrl = returnUrl;
return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData });
}
}
Ale różnych dostawców może używać różnych kluczy. Tak więc, w zależności od dostawcy, który był używany, będziesz musiał użyć odpowiedniego klucza, aby odczytać żądane informacje.
Cześć Darian, wielkie dzięki za szybką odpowiedź w sobotę! :) Tak, wiem o tym, jak komunikować się z dostawcami usług społecznościowych za pomocą ich API, ale nie mogę w tej chwili dowiedzieć się, jak dołączyć token dostępu do żądania. Czy muszę ręcznie przygotować żądanie lub czy istnieją już klasy w ramach, z których mógłbym skorzystać? –
Różni dostawcy mogą udostępniać zestawy SDK, które mogą pomóc w osiągnięciu tego zadania. Sprawdź dokumentację usługodawcy, aby sprawdzić, czy oferuje pakiet SDK dla klienta .NET. Jeśli nie, możesz zawsze wykonać żądanie ręcznie, wysyłając żądanie HTTP do odpowiedniego punktu końcowego. Będziesz oczywiście musiał sprawdzić dokumentację, aby zobaczyć, gdzie dokładnie API oczekuje, aby wysłać token dostępu. Różni dostawcy mają różne implementacje. –