winforms - 将 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
我错过了什么?
任何帮助,将不胜感激。
解决方案
推荐阅读
- php - 是否有运行 PHP v7.0 的 PSWebServiceLibrary.php 版本?
- javascript - 在 npm 构建期间找不到模块 @restart/context/forwardRef
- c# - C#中包含html转义字符的字符串大写
- c - 从 STDIN 逐行读取并将其写入输出文件
- qt5 - 取消停靠后 QOpenGLWidget 上的文本消失
- javascript - 当我想调用函数时如何调用布尔 isTested
- azure-devops - 备份/恢复 AzureDevOps
- javascript - 声明这个函数的两种方式有什么区别?
- android - Andrpoid 混合模式无法按预期工作
- java - Spring事务配置减去Exception(`-Exception`)的含义