我有一个ASP.NET MVC 4应用程序。 昨天我的用户开始抱怨他们无法使用他们的Google帐户登录。大量的谷歌搜索后,我发现这个:DotNetOpenAuth.GoogleOAuth2。我遵照指示。用于Google的DotNetOpenAuth OAuth2客户端的问题
我在Google控制台中为Web应用程序创建了客户端ID。
在AuthConfig.RegisterAuth()我有:
var client = new DotNetOpenAuth.GoogleOAuth2.GoogleOAuth2Client(googleClientID, googleClientSecret);
var extraData = new Dictionary<string, object>();
OAuthWebSecurity.RegisterClient(client, "Google", extraData);
在的AccountController,我有这样的事情:
public ActionResult ExternalLoginCallback(string returnUrl)
{
DotNetOpenAuth.GoogleOAuth2.GoogleOAuth2Client.RewriteRequest();
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))
{
// here I have some logic where is user sent when login was successfull
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);
// some logic
return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = username, ExternalLoginData = loginData, EncryptedEmail = encryptedEmail });
}
}
我有两个问题:
之前更改,
result.UserName
包含用户电子邮件。现在它包含名称。但我需要电子邮件。除此之外,注册工作正常。我最大的问题 - 现有用户无法使用他们的Google帐户登录。代码为
"// User is new, ask for their desired membership name"
。我现在得到的ProviderUserId对于同一个电子邮件地址是不同的。
非常感谢您的任何建议。
请问,有人知道吗?我被卡住了,我的用户无法登录。我相信很多人不得不处理这个问题。非常感谢您的帮助。 –