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);
}
}