ASP Identity GetExternalLoginInfoAsync 总是 return 空
ASP Identity GetExternalLoginInfoAsync always return null
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
loginInfo 始终为 null,我用 fiddler 检查响应,似乎站点 (Steam) return 是正确的值
"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 中遇到同样问题的人那里读了一堆帖子,但到目前为止运气不好。
我们将不胜感激。
所以我得到 null 的原因是因为我在 Startup.Auth.cs
中的 app.CreatePerOwinContext
之前放置了 app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
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!
}
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
loginInfo 始终为 null,我用 fiddler 检查响应,似乎站点 (Steam) return 是正确的值
"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 中遇到同样问题的人那里读了一堆帖子,但到目前为止运气不好。
我们将不胜感激。
所以我得到 null 的原因是因为我在 Startup.Auth.cs
app.CreatePerOwinContext
之前放置了 app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
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!
}