Как исправить «ошибку: (401) Несанкционированный» при попытке получить OAuth-гранты от backpack.tf? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь получить OAuth-гранты от https://backpack.tf/ Как объяснено на странице разработчика: 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 мне тоже не поможет

1 Ответ

0 голосов
/ 04 февраля 2019

Предполагая, что у вас есть правильные / правильные значения для идентификатора клиента, секрета клиента, области действия и типа предоставления (если любой из них неправильный, вы можете получить ответ 401, хотя это зависит от кода сервера, и я ''я не знаком с этим), у вас есть ошибка при построении тела постданных.

Отсутствует разделитель '&' для параметра области действия, поэтому секрет клиента будет включать в себя область действия, которая будетконечно, сделайте клиент тайной неправильно.

. . . "&client_secret=" & client_secret & "&scope=read write"
                                           ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...