我正在尝试使用仅通过 asp.net 身份(使用 OWIN)和 ProviderKey 提供给我的刷新令牌来创建 LiveConnectClient。看起来不需要 HttpContextBase 的唯一方法是通过 InitializeSessionAsync。
当我尝试创建客户端时,我得到:
Microsoft.Live.LiveAuthException:来自给定 RefreshTokenInfo 实例的用户 ID 与刷新令牌不匹配。
不太确定它期望什么用户 ID,因为我给它提供了通过 ASP.NET 身份传递的提供程序密钥(在我的情况下为 17 个字符)。下面是我的代码。
public class Class1
{
protected async Task<LiveConnectClient> GetLiveConnectClient()
{
var authClient = new LiveAuthClient(_clientId, _clientSecret, null, new RefreshTokenHandler(_refreshToken, _providerKey));
var session = await authClient.InitializeSessionAsync("http://.../signin-microsoft");
return new LiveConnectClient(session.Session);
}
}
public class RefreshTokenHandler : IRefreshTokenHandler
{
private readonly string _refreshToken;
private readonly string _userId;
public RefreshTokenHandler(string refreshToken, string userId)
{
_refreshToken = refreshToken;
_userId = userId;
}
public Task<RefreshTokenInfo> RetrieveRefreshTokenAsync()
{
return Task.FromResult(new RefreshTokenInfo(_refreshToken, _userId));
}
public async Task SaveRefreshTokenAsync(RefreshTokenInfo tokenInfo)
{
await Task.Delay(0);
}
}