【发布时间】:2019-02-04 14:17:32
【问题描述】:
我正在尝试从 https://backpack.tf/ 获得 OAuth 授权,如开发人员页面中所述:https://backpack.tf/developer/pages/oauth_grants
这是我的代码:
Imports System.Net
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim client_id As String = "myclientid"
Dim client_secret As String = "myclientsecret"
Dim resp As String = WebRequestPOST("https://backpack.tf/oauth/access_token", client_id, client_secret)
RichtextBox1.Text = resp
End Sub
Public Function WebRequestPOST(ByVal url As String, ByVal client_id As String, ByVal client_secret As String) As String
Dim wrequest As HttpWebRequest = HttpWebRequest.Create(url)
wrequest.ContentType = "application/x-www-form-urlencoded"
wrequest.Accept = "1.0"
wrequest.Method = "POST"
Dim postData As String = "grant_type=client_credentials&client_id=" & client_id & "&client_secret=" & client_secret & "scope=read write"
Dim postDataByte As Byte() = Encoding.UTF8.GetBytes(postData)
Using Writer As New IO.BinaryWriter(wrequest.GetRequestStream)
Writer.Write(postDataByte)
End Using
Dim wresponse As String = ""
Try
wresponse = New StreamReader(wrequest.GetResponse.GetResponseStream(), Encoding.Default).ReadToEnd
Catch ex As Exception
wresponse = ex.ToString
Return wresponse
End Try
Return wresponse
End Function
End Class
它总是返回“System.Net.WebException:远程服务器返回错误:(401)未经授权。 在 System.Net.HttpWebRequest.GetResponse()"
我尝试了许多不同的方法,例如添加:
wrequest.Headers.Add("Authorization", "myUserToken")
或:
wrequest.Headers.Add("Authorization", "bearer myUserToken")
(和 reddit OAuth 一样)但结果还是一样
我无法在https://backpack.tf/developer/ 上找到有关它的更多信息,甚至无法通过阅读 github 中所有现有机器人的代码。
使用 DotNetOpenAuth 库也无济于事
【问题讨论】: