2013-02-23 10 views
5

MVC 4 uygulamasının herhangi bir sosyal ağ sağlayıcısı ile nasıl entegre edileceğine ve kullanıcıların nasıl doğrulanacağına, ancak daha sonra ne yapılacağına dair çok ayrıntılı bilgiler içeren çok sayıda yazı ve makale buldum. Örneğin, kimliği doğrulanmış kullanıcı hakkında herhangi bir bilgi nasıl alınır? Başa gelen en basit görev, kimliği doğrulanmış kullanıcı - ad, soyadı, avatarın url'si, arkadaş listesi vb.MVC 4 OAuth entegrasyonu. Sıradaki nedir ve veri sağlayıcısından nasıl bilgi edinilir?

Güncelleme: İşte

  1. olduğunu paylaşan bazı post ve article bazı hafif
  2. Faydalı article Facebook ile etkileşim nasıl

cevap

7

OAuth yani sadece doğrulanırken bir erişim elde içindir jeton. Bu erişim kodunu aldığınızda, bu bilgiyi servis sağlayıcıdan almak için kullanabilirsiniz. Bunun nasıl yapılabileceğini görmek için sağlayıcının belgelerine danışın.

Standart ve çoğu sağlayıcı bunları desteklediğinden, Ad ve Soyad gibi olsa alabileceğiniz bazı hak talepleri vardır.

[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 }); 
    } 
} 

Ama farklı sağlayıcılar farklı tuşları kullanabilirsiniz: ExternalLoginCallback callback'inde içindeki Örneğin result.ExtraData sözlükten bu bilgileri alma denemesinde olabilir. Bu yüzden kullanılan sağlayıcıya bağlı olarak istenen bilgiyi okumak için uygun anahtarı kullanmanız gerekecektir.

+0

Merhaba Darian, Cumartesi günü hızlı yanıt için çok teşekkürler! :) Evet, API'lerini kullanan sosyal sağlayıcılarla nasıl iletişim kurabileceğimi, ancak şu anda isteğe erişim belirtecini nasıl ekleyeceğimi bilemediğimin farkındayım. İsteği elle hazırlamak zorunda mıyım yoksa kullanabileceğim çerçevede zaten var olan sınıflar var mı? –

+0

Farklı sağlayıcılar, bu görevi gerçekleştirmede size yardımcı olabilecek SDK'lar sağlayabilir. .NET istemcisi için bir SDK sunup sunmadığını görmek için servis sağlayıcınızın belgelerine bakın. Aksi takdirde, ilgili uç noktaya bir HTTP isteği göndererek talebi el ile gerçekleştirebilirsiniz. Tabii ki, API'nın erişim belirtecini göndermek için tam olarak neyi beklediğini görmek için belgeleri kontrol etmeniz gerekir. Farklı sağlayıcılar farklı uygulamalara sahiptir. –