我使用Microsoft帐户在我的应用程序中配置社交登录。此时,用户可以进行身份验证,但是当他按下/ Account / ExternalLoginCallback中的注册按钮时,会出现验证错误(需要UserId)。
调试应用程序后,错误显示为此处显示
最后,尽管存在错误,用户仍然保存在数据库中(并且具有用户ID)。
我发现这很奇怪。你知道会发生什么吗?
更新:根据以下评论的要求,以下是一些可能有用的信息。
此图显示用户实际上在抛出异常之前获取了userId。
这是配置代码。老实说,除了clientId和key之外,我没有太大变化。出于显而易见的原因,删除了clientId和Key。
using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Owin;
namespace EmpleoDotNet
{
public partial class Startup
{
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
// Use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Uncomment the following lines to enable logging in with third party login providers
app.UseMicrosoftAccountAuthentication(
clientId: "[ClientId]",
clientSecret: "[ClientSecret]");
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
//app.UseFacebookAuthentication(
// appId: "BLAH",
// appSecret: "BLAH");
//app.UseGoogleAuthentication();
}
}
}