2013-02-23 6 views
5

Znalazłem wiele postów i artykułów z bardzo szczegółowymi informacjami o tym, jak skonfigurować aplikację MVC 4 do zintegrowania z dowolnym dostawcą sieci społecznościowej i jak uwierzytelniać użytkowników, ale co dalej? Jak na przykład uzyskać informacje o uwierzytelnionym użytkowniku? Najprostsze zadanie, które przychodzi mi do głowy, jak zdobyć informacje o uwierzytelnionym użytkowniku - imię, nazwisko, adres awatara, listę znajomych itp.?Integracja OVuth MVC 4. Co dalej i jak uzyskać informacje od dostawcy danych?

Aktualizacja:

  1. Oto post i article że podzielić się światło
  2. Przydatne article jak współdziałać z Facebook

Odpowiedz

7

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.

+0

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ć? –

+0

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. –

Powiązane problemy