1

asp.net ID (OWIN を使用) と ProviderKey を介して提供された更新トークンのみを使用して、LiveConnectClient を作成しようとしています。HttpContextBase を必要とせずにこれを行う唯一の方法は、InitializeSessionAsync を使用することです。

クライアントを作成しようとすると、次のようになります。

Microsoft.Live.LiveAuthException: 指定された RefreshTokenInfo インスタンスのユーザー ID が更新トークンと一致しません。

ASP.NET ID (私の場合は 17 文字) を介して渡されたプロバイダー キーを提供しているため、どのユーザー ID が期待されているのかよくわかりません。以下は私のコードです。

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