Search code examples
c#asp.net-mvcopenidasp.net-identityowin

ASP Identity GetExternalLoginInfoAsync always return null


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

loginInfo is always null, I check the response with fiddler and it seems the site (Steam) return the correct value

"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
            }
        ]

    }

so why am I getting null? I read bunch of thread from people with same problem in SO but no luck so far.

Any help will be appreciated.


Solution

  • So the reason I'm getting null is because I put app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); before app.CreatePerOwinContext in 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
    }
    

    so I change it to :

    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!
    }