我正在使用oauth令牌访问web api。
令牌在1 hour
之后到期。但是我希望在过期时添加生成新令牌的功能。
我发现如果有过期令牌,它会将StatusCode发送为unauthorized
。
如果它是唯一一个告知令牌过期的状态代码,请告诉我。
答案 0 :(得分:6)
再次复活这个帖子并采用@Lavandysh的解决方案并拉入System.IdentityModel.Tokens.Jwt
类;调用此方法以了解令牌在请求之前是否仍然有效:
public bool _isEmptyOrInvalid (string token)
{
if (string.IsNullOrEmpty(token))
{
return true;
}
var jwtToken = new JwtSecurityToken(token);
return (jwtToken == null) || (jwtToken.ValidFrom > DateTime.UtcNow) || (jwtToken.ValidTo < DateTime.UtcNow);
}
答案 1 :(得分:2)
我在开发 Xamarin Forms 应用程序时遇到了这个问题。这里的主要问题是我无法在项目中安装任何 Nuget。所以我决定改进@Lavandysg 的答案,因为它没有正确提取到期时间戳,也没有正确计算到期时间。这是我使用正则表达式从令牌中提取过期时间的最终代码:
retry if response.code != "200"
答案 2 :(得分:1)
最简单的方法是尝试使用它来调用服务。如果它已过期,它将拒绝它,然后你可以请求一个新的。
您还可以保留收到令牌的时间,并使用expires_in
计算约会何时到期。然后在到期日期之后发出新请求之前请求新令牌。