我们正在使用ADAL V2.29.0尝试完成滚动的AccessToken。 IE,AccessToken会在4天后过期,而RefreshToken会在7天后过期。每次登录时,您的RefreshToken都会获得一个新的AccessToken(因此从您上次登录起4天到期)
我们正在使用AcquireTokenByRefreshTokenAsycn(),并且正在获取新的更新的AccessToken。但是,TokenCache不会被更新,并且不会将新令牌写入到我们的tokenPath中。
如何将TokenCache字典项设置为AquireTokenByRefreshTokenAsync的结果?
AuthenticationContext ac = new AuthenticationContext( strAuthority, false, tokenFileCache );
//Authenticate using a refresh token and get new Access Token
var refreshTokenString = File.ReadAllText( Path.Combine( appDataPath, refreshToken ) );
ar = await ac.AcquireTokenByRefreshTokenAsync( refreshTokenString, strClientIdentifier );
答案 0 :(得分:0)
答案是ADAL中的AquireTokenByRefreshToken调用被设计为不访问TokenCache。后台的TokenCache是ConcurrentDictionary,它是TokenCache的私有成员,无法从ADAL框架外部访问。祝所有尝试这样做的人好运。我认为这会比我发现的搜索更为普遍