首页 > 解决方案 > 将 OAuth 2.0 Xero 授权代码交换为 Xero 访问令牌

问题描述

这是如何根据https://developer.xero.com/documentation/oauth2/auth-flow从 OAuth 2.0 Xero 授权码获取 Xero 访问令牌的结构

POST https://identity.xero.com/connect/token
authorization: "Basic " + base64encode(client_id + ":" + client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=xxxxxx
&redirect_uri=https://myapp.com/redirect

我创建了以下 vb.net 框架 4.6.1 Winforms 代码:

Dim base64Decoded As String = xeroClientId & ":" & xeroClientSecret
Dim base64Encoded As String
Dim data As Byte()
data = System.Text.ASCIIEncoding.ASCII.GetBytes(base64Decoded)
base64Encoded = System.Convert.ToBase64String(data)

Dim Basic As String = "Basic " & base64Encoded

Dim getTenant As RestClient = New RestClient("https://identity.xero.com/connect/token")
getTenant.Timeout = -1
Dim request = New RestRequest(Method.POST)
request.AddHeader("authorization", Basic)
request.AddHeader("Content-Type", "application/x-www-form-urlencoded")

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls

request.AddParameter("grant_type", "authorization_code", ParameterType.RequestBody)
request.AddParameter("code", xeroCode, ParameterType.RequestBody)
request.AddParameter("redirect_uri", String.Format("http://localhost:5000/"), ParameterType.RequestBody)

Dim response As IRestResponse = getTenant.Execute(request)

这段代码给了我错误

“不支持的授权类型”

在请求正文request.AddParameter("grant_type", "authorization_code", ParameterType.RequestBody)中创建不是正确的方法吗?grant_type=authorization_code我错过了什么?

任何帮助,将不胜感激。

标签: winformsoauth-2.0authorizationxero-api

解决方案


推荐阅读