1

我正在尝试使用仅通过 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);
    }
}
4

0 回答 0