728x90
https://www.upbit.com/service_center/open_api_guide
여기에서 본인 계정으로 API 를 신청한다.
신청 절차가 복잡하지 않다.
IP 는 https://nordvpn.com/ko/ip-lookup/ 여기에서 확인하면되고
중간에 카카오 인증만 잘되면 아래처럼 API 키(Access/Secret Key)가 발급된다.
아래는 C# 에서 인증절차를 거쳐 내 계좌 정보를 가져오는 방법이다.
Nuget 은 아래와같이 설치하고
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Text;
using System.Windows;
using Newtonsoft.Json;
using RestSharp;
namespace UpBitApp
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var payload = new JwtPayload
{
{ "access_key", 발급받은ACCESSKEY },
{ "nonce", Guid.NewGuid().ToString() },
//{ "query_hash", queryHash },
{ "query_hash_alg", "SHA512" }
};
byte[] keyBytes = Encoding.Default.GetBytes(발급받은SECRETKEY);
var securityKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(keyBytes);
var credentials = new Microsoft.IdentityModel.Tokens.SigningCredentials(securityKey, "HS256");
var header = new JwtHeader(credentials);
var secToken = new JwtSecurityToken(header, payload);
var jwtToken = new JwtSecurityTokenHandler().WriteToken(secToken);
var authorizationToken = "Bearer " + jwtToken;
var client = new RestClient("https://api.upbit.com/v1/accounts");
var request = new RestRequest();
request.AddHeader("Accept", "application/json");
request.AddHeader("Authorization", authorizationToken);
RestResponse response = client.Execute(request);
var data = JsonConvert.DeserializeObject<List<UpBitAccountData>>(response.Content);
}
}
}
UpBitAccountData.cs
public class UpBitAccountData
{
public string currency { get; set; }
public string balance { get; set; }
public string locked { get; set; }
public string avg_buy_price { get; set; }
public bool avg_buy_price_modified { get; set; }
public string unit_currency { get; set; }
}
결과 (계좌 잔액은 없는 상태)
참고
https://docs.upbit.com/docs/create-authorization-request
728x90
'C# > Winform' 카테고리의 다른 글
[C#] .NET6 Winform 에서 도구상자에 아무것도 안보일때 (0) | 2022.08.26 |
---|---|
[C#] License Header Manager 사용하기 (0) | 2022.08.05 |
[C#] global using (0) | 2022.06.15 |
[C#] null 허용 관련 에러 없애기 (0) | 2022.06.05 |
[C#] Visual Studio 2022 에서 Console.WriteLine 내용이 출력창에 나타나지 않을때 (0) | 2022.05.14 |