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