You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中使用OAuth2获取Token?求实现示例

VB.NET实现OAuth2认证获取Token及API对接示例

一、获取OAuth2访问Token

电商平台的OAuth2通常采用客户端凭证模式(Client Credentials),以下是贴合你现有代码风格的Token获取实现:

' 获取OAuth2访问Token
Private Function GetOAuth2Token() As String
    ' 替换为平台提供的Token请求端点URL
    Dim tokenUrl As String = "https://api.your-platform.com/oauth2/token"
    
    ' 填入平台提供的凭证信息
    Dim clientId As String = "你的API Key/IDkey"
    Dim clientSecret As String = "你的Secret Key"
    Dim tenantId As String = "你的Tenant ID key"
    
    ' 构造请求参数(需对照平台文档调整参数名,部分平台可能要求JSON格式)
    Dim postData As String = $"grant_type=client_credentials&client_id={Uri.EscapeDataString(clientId)}&client_secret={Uri.EscapeDataString(clientSecret)}&tenant_id={Uri.EscapeDataString(tenantId)}"
    
    Dim webRequest As HttpWebRequest = CType(WebRequest.Create(tokenUrl), HttpWebRequest)
    webRequest.Method = "POST"
    webRequest.ContentType = "application/x-www-form-urlencoded" ' 多数平台采用表单格式
    webRequest.Headers.Add("cache-control", "no-cache")
    
    ' 写入请求参数
    Using requestWriter As New StreamWriter(webRequest.GetRequestStream())
        requestWriter.Write(postData)
    End Using
    
    Dim token As String = ""
    Try
        Using postResponse As HttpWebResponse = CType(webRequest.GetResponse(), HttpWebResponse)
            Using responseReader As New StreamReader(postResponse.GetResponseStream())
                Dim responseJson As String = responseReader.ReadToEnd()
                ' 解析JSON获取Token(需先安装Newtonsoft.Json NuGet包,或用.NET内置的System.Text.Json)
                Dim jsonObj As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(responseJson)
                token = jsonObj("access_token").ToString()
            End Using
        End Using
    Catch ex As WebException
        ' 处理Token请求错误
        Using errorResponse As HttpWebResponse = CType(ex.Response, HttpWebResponse)
            Using reader As New StreamReader(errorResponse.GetResponseStream())
                MessageBox.Show("Token获取失败: " & reader.ReadToEnd())
            End Using
        End Using
    End Try
    
    Return token
End Function

二、修改原有API请求代码

将原Basic认证替换为Bearer Token认证,调用上述函数获取Token后即可发起请求:

' 修改后的API请求逻辑
Private Sub SendPlatformApiRequest()
    Dim targetApiUrl As String = "你的原有电商API接口URL"
    Dim accessToken As String = GetOAuth2Token()
    
    If String.IsNullOrEmpty(accessToken) Then
        MessageBox.Show("未获取到有效Token,终止请求")
        Return
    End If
    
    Dim webRequest As HttpWebRequest = TryCast(WebRequest.Create(targetApiUrl), HttpWebRequest)
    webRequest.Method = "POST"
    webRequest.Accept = "application/json"
    webRequest.ContentType = "application/json"

    webRequest.Headers.Add("cache-control", "no-cache")
    ' 替换原Basic认证头部为Bearer Token
    webRequest.Headers.Add("Authorization", $"Bearer {accessToken}")

    ' 构造请求体(保留你原有逻辑)
    Dim requestBody As String = "{"
    requestBody += "      ""Format"": """ & "zpl" & ""","
    requestBody += "      ""Orders"": [" & """" & local.text & """" & "]"
    requestBody += "}"

    Using requestWriter As New StreamWriter(webRequest.GetRequestStream())
        requestWriter.Write(requestBody)
    End Using

    Try
        Using response As HttpWebResponse = TryCast(webRequest.GetResponse(), HttpWebResponse)
            Using responseReader As New StreamReader(response.GetResponseStream())
                TxtRespostaApi.Text = responseReader.ReadToEnd()
            End Using
        End Using
    Catch ex As WebException
        ' 处理API请求错误
        Using errorResponse As HttpWebResponse = CType(ex.Response, HttpWebResponse)
            Using reader As New StreamReader(errorResponse.GetResponseStream())
                TxtRespostaApi.Text = "请求失败: " & reader.ReadToEnd()
            End Using
        End Using
    End Try
End Sub

关键注意事项

  • 参数适配:不同平台的OAuth2端点要求可能存在差异,比如部分平台要求用JSON格式发送Token请求参数,或tenant_id需要放在请求头部而非URL参数中,务必对照平台提供的OAuth2文档调整参数名和格式。
  • Token缓存:Token存在有效期,不要每次请求都重新获取,建议缓存Token和过期时间,到期后再重新请求。
  • JSON解析依赖:示例使用Newtonsoft.Json,需在项目中安装对应NuGet包;若使用.NET Core/.NET 5+,可改用内置的System.Text.Json替代。
  • 错误处理:可根据实际需求扩展错误处理逻辑,比如增加日志记录。

内容的提问来源于stack exchange,提问作者Kevyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:09:59