/// <summary>
/// 현재 설정으로 유효한 토큰을 확보합니다.
/// </summary>
/// <returns>토큰 정보</returns>
public async Task <IamportToken> AuthorizeAsync()
{
ThrowsIfDisposed();
var input = new IamportTokenRequest
{
ApiKey = options.ApiKey,
ApiSecret = options.ApiSecret
};
// TODO: 인증 코드는 UsersApi와 중복된 부분임.
// 별도로 빼는 방법이 있을지?
var url = ApiPathUtility.Build(options.BaseUrl, UsersGetTokenPath);
var httpRequest = new HttpRequestMessage(HttpMethod.Post, url);
httpRequest.Content = new JsonContent(input);
var response = await RequestAsync <IamportToken>(httpRequest);
if (response.Code != 0)
{
throw new IamportResponseException(response.Code, response.Message);
}
var token = response.Content;
lock (tokenLock)
{
httpClient.DefaultRequestHeaders.Remove(options.AuthorizationHeaderName);
httpClient.DefaultRequestHeaders.Add(options.AuthorizationHeaderName, token.AccessToken);
CurrentToken = token;
}
return(token);
}