如何将Webclient用于oauth 2.0?

时间:2019-03-22 20:18:58

标签: oauth-2.0

我处理了很多交易所的很多API。

我希望API能够在没有用户干预的情况下正常工作。

通常,我写这样的代码

Dim timestamp = getEstimatedServerTimeStamp().ToString
Dim domain = "https://api.kucoin.com"
Dim endpoint = "/api/v1/" + method
Dim stringtosign = timestamp + "GET" + endpoint '1553106384182GET/api/v1/accounts
'Dim secretandpassphrase = _secret1.Split("|"c)
'Dim secret = secretandpassphrase(0) 'a7c38ae4-b6e3-4254-b78c-*******
'Dim passphrase = secretandpassphrase(1) '7Q5eVqOw*******

Dim hasher = New System.Security.Cryptography.HMACSHA256(System.Text.Encoding.UTF8.GetBytes(_secret1))
Dim sighashbyte = hasher.ComputeHash(System.Text.Encoding.UTF8.GetBytes(stringtosign))
Dim sighash = System.Convert.ToBase64String(sighashbyte)
Dim url = domain + endpoint 'url https://api.kucoin.com/api/v1/accounts
Dim response = CookieAwareWebClient.downloadString1(url, "", {Tuple.Create("KC-API-SIGN", sighash), Tuple.Create("KC-API-TIMESTAMP", timestamp), Tuple.Create("KC-API-KEY", _apiKey1), Tuple.Create("KC-API-PASSPHRASE", _passphrase1)})

Return response

所以我正在使用密钥和API密钥。

但是,在Sstex,情况有所不同。

首先,他们告诉我注册一个客户端和一个重定向URL。重定向URL是什么意思?

我尝试过

转到https://apidocs.stex.com/#/Profile/get_profile_wallets

尝试一些演示。

事实证明,我完全不需要使用我的API密钥和秘密就可以看到我的钱包内容。我授权的不是API密钥和机密

https://apidocs.stex.com/#/Profile/get_profile_wallets

然后我可以看到我的余额。

所以我在网上浏览后尝试了一些类似的代码

我做到了

   If token = "" Then
        Dim token1 = CookieAwareWebClient.downloadString1("https://app.stex.com/oauth/authorize?client_id=1**&client_secret=3vmEisPCGekF1JGePkwdSKdf4Q00lJTKmwxh****")

    End If

我得到的不是json,而是json。

所以我想知道。

我应该如何使用OAuth?它设计用于与常规API访问不同的内容吗?

手册说我应该卷曲诸如此类的东西

curl -X GET "https://api3.stex.com/profile/wallets?sort=DESC&sortBy=BALANCE" -H  "accept: application/json" -H  "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjY1NzUyODQwYmMzMmMwNGU0MTExNmRmYjQ0M2I5NWY4NzAzYmVkYWIyNTk0ZWZhMTg3ZjhhMmQxOThiNzM1NGRkNThjZmYzYWJkZWEzZjg5In0.eyJhdWQiOiIxNDIiLCJqdGkiOiI2NTc1Mjg0MGJjMzJjMDRlNDExMTZkZmI0NDNiOTVmODcwM2JlZGFiMjU5NGVmYTE4N2Y4YTJkMTk4YjczNTRkZDU4Y2ZmM2FiZGVhM2Y4OSIsImlhdCI6MTU1MzI4NTc4NiwibmJmIjoxNTUzMjg1Nzg2LCJleHAiOjE1NTMzMjg5ODYsInN1YiI6IjMxOTgwMSIsInNjb3BlcyI6WyJwcm9maWxlIiwicmVwb3J0cyIsInRyYWRlIl19.aRuu1gmUmpcck_rMh9fcQwfDeJezn0tD0v1aSJ7joIhtsIXAdaw0H-SFOXwzo_HevFrcDnWGrZ4s9sTd1_vgRS2or7HyiV54c0ItVym6bOMKnFhGuxWWLubXN9HstjiM9TSghk7FtF5J0XeIDcY4vp25ycBmWM6Dddeyu4ehu3hurG-jUyT9N1C4u5KwqkYazeE1Z6XpCUrH77tAIlecTssPUzDtM6j-dYJOirYLx-E7fTn6H_bpHq_mosiHEy7IGe2uyggx0UIg4YIIX0noATxNfFiqZlXc32u8NywS7bDkFJ8e4s2r6vbL9pZU7Qe81IFrhs2jgUrQyjxe4SKsyolA9SulwF1haqsRGYTN_fNZyNm7u_Nzs2-RWxZw7h5KHT48AI483bHqJS3qfpjNF7FdpEufnn1QuFplumvyATtlEf56RCTfZ11fWjaET_b19P_3KpJw8H3pYSh8f-7MdIJcn68X1ls_9GahKKlX059I2M_6S2XkjwvnETlhiWGIdpttg2rJ1oHsEiNUuYzj7d1MBKGhSMX4y8OpB9hhW6CjgajG-YVk3SU6JWaVBEY_1w49Q6U-KxD4nzMK5I85Cn1C1iDPExuOwuyRRH1XSxsXLQ9tURsLOytlp7LkUNvzxb5lxZ18ho-OkvkWVkS18oSxR5y__WllywD_6_NT64s"

所以我应该获得一个承载令牌。我该如何说“卷曲”?

我想要标准的Web查询,例如使用curl。我想避免像一些专门的oauth库那样不熟悉的库。

我正在制作一个应用程序。我没有建立网站。我什至应该使用oauth2吗?

我在这里阅读了有关oauth2的信息

https://aaronparecki.com/oauth-2-simplified/#roles

它说“用户”将看到一些网站,他们可以“授权”。

看。用户就是我。我得到了API密钥,密码,客户端ID,客户端密码。我不希望“用户”看到任何东西。我批准所有这些东西。

Stex表示他们将放弃其版本2 API,并将使用版本3API。他们说版本3 API使用Oauth。

oauth是否还适合无人值守运行的应用程序?

0 个答案:

没有答案