我目前正在升级我的登录过程,以便 Google 在他们贬低他们的 OpenID 登录方法之前使用 OAuth。
到目前为止,我确定的步骤是我已将 Microsoft.Owin.Security.Google 包升级到版本 2.1.0,因为该版本包括在 UseGoogleAuthentication 方法中包含选项的能力。
我尝试在链接中使用 Alex Wheat 的解决方案:
Get ExtraData from MVC5 framework OAuth/OWin identity provider with external auth provider
Startup.Auth.cs(也包括 Facebook 身份验证)中的代码来自:
var facebookAuthenticationOptions = new FacebookAuthenticationOptions()
{
AppId = "MYAPPID",
AppSecret = "MYSECRET"
};
facebookAuthenticationOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookAuthenticationOptions);
app.UseGoogleAuthentication();
对此:
var facebookAuthenticationOptions = new FacebookAuthenticationOptions()
{
AppId = "MYAPPID",
AppSecret = "MYSECRET"
};
facebookAuthenticationOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookAuthenticationOptions);
var googleOAuth2AuthenticationOptions = new GoogleOAuth2AuthenticationOptions
{
ClientId = "MYCLIENTID",
ClientSecret = "MYSECRET",
CallbackPath = new PathString("/en/Account/ExternalLoginCallback"),
Provider = new GoogleOAuth2AuthenticationProvider()
{
}
};
app.UseGoogleAuthentication(googleOAuth2AuthenticationOptions);
在向 Google 身份验证添加选项后,我的应用程序不允许为 google 或 facebook 调用 ExternalLoginCallback 操作(facebook 代码没有更改,但问题仍然影响它)。
在前端,点击外部登录按钮后,页面将我重定向到下面的链接并返回一个空的白屏
https....../en/Account/ExternalLoginCallback#__=_ (There is actually only a single underscore before the = sign, SO syntax removes it if I have it as it appears on my address bar).
Facebook 和
https....../en/Account/ExternalLoginCallback
对于谷歌。它不会像往常一样命中下面的 Controller 方法(我尝试在此函数中放置调试断点,并且在有 google 身份验证选项时它永远不会停止。
// GET: /Account/ExternalLoginCallback
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
如果我从 Google 身份验证中删除身份验证选项,它只会恢复到旧的 OpenID 登录名并再次正常工作。
我在这里错过了一些简单的东西吗?或者 Owin.Security.Google 库内部发生了什么不好的事情导致了问题?
请您参考如下方法:
只试这个
var googleOAuth2AuthenticationOptions = new GoogleOAuth2AuthenticationOptions
{
ClientId = "MYCLIENTID",
ClientSecret = "MYSECRET",
};
app.UseGoogleAuthentication(googleOAuth2AuthenticationOptions);
这对我有用