ASP Identity GetExternalLoginInfoAsync始终返回null

时间:2015-07-04 04:26:47

标签: c# asp.net-mvc openid asp.net-identity owin

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
     return RedirectToAction("Login");
}

loginInfo始终为null,我用fiddler检查响应,似乎网站(Steam)返回正确的值

"response": {
        "players": [
            {
                "steamid": "76561198057961078",
                "communityvisibilitystate": 3,
                "profilestate": 1,
                "personaname": "Press \"R\" to restart™",
                "lastlogoff": 1435947642,
                "commentpermission": 2,
                "profileurl": "http://steamcommunity.com/id/warheat1990/",
                "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/598fa035b19342a9e0b26a8115e8ddc5da0cc900.jpg",
                "avatarmedium": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/598fa035b19342a9e0b26a8115e8ddc5da0cc900_medium.jpg",
                "avatarfull": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/598fa035b19342a9e0b26a8115e8ddc5da0cc900_full.jpg",
                "personastate": 1,
                "primaryclanid": "103582791434936111",
                "timecreated": 1327988764,
                "personastateflags": 0
            }
        ]

    }

为什么我会变空?我从那些有相同问题的人那里读了一堆帖子但到目前为止没有运气。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

所以我得到null的原因是因为我在app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ");之前app.CreatePerOwinContext放了Startup.Auth.cs

public void ConfigureAuth(IAppBuilder app)
{
    app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); //if you put it here, it won't work
    // Configure the db context, user manager and signin manager to use a single instance per request
    app.CreatePerOwinContext(ApplicationDbContext.Create);
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

    //rest of the code here
}

因此我将其更改为:

public void ConfigureAuth(IAppBuilder app)
{
    // Configure the db context, user manager and signin manager to use a single instance per request
    app.CreatePerOwinContext(ApplicationDbContext.Create);
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

    //rest of the code here
    app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); //works!
}