当我创建一个新的mvc网站时,它会自动创建AccountController.cs控制器。在这个课程中,有一个从社交网络登录的动作。
[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)
{
// 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 });
}
}
我已经添加了twitter secret和api id。但在回调中我只有用户名。但我也想要用户的真实姓名信息。
google和facebook登录也是必要的。
答案 0 :(得分:0)
大多数社交网络API都有一个端点,用于在使用OAuth令牌进行身份验证后获取其他用户信息。例如,对于Twitter,端点为https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials - 您必须发送令牌和令牌密钥(您在验证时从OAuth提供商处获得),您将收到Twitter提供的用户信息。