Discogs api oauth:身份验证/标识
我正试图建立一个.net程序来帮助我组织我的乙烯基。为此,我使用discogsapi。我对oauth程序有问题。前4步是成功的;我收到了一个访问令牌和访问令牌密钥(使用请求令牌、请求令牌密钥和验证器)。只有最后一步会给我带来问题:身份检查,看我(用户)是否成功授权。根据,应该足够将访问令牌和访问令牌密钥发送到/oauth/identity,但我一直收到“502坏网关”响应 这是我发送的请求:Discogs api oauth:身份验证/标识,oauth,identity,Oauth,Identity,我正试图建立一个.net程序来帮助我组织我的乙烯基。为此,我使用discogsapi。我对oauth程序有问题。前4步是成功的;我收到了一个访问令牌和访问令牌密钥(使用请求令牌、请求令牌密钥和验证器)。只有最后一步会给我带来问题:身份检查,看我(用户)是否成功授权。根据,应该足够将访问令牌和访问令牌密钥发送到/oauth/identity,但我一直收到“502坏网关”响应 这是我发送的请求: Public Function makeTestRequest() Dim requestRes
Public Function makeTestRequest()
Dim requestResult As String = ""
Dim user_agent As String = "ll// .01 DiscogsTestApp"
Dim oauth_consumer_key As String = "AAA"
Dim oauth_token As String = "BBB"
oauth_signature_method = "PLAINTEXT"
Dim oauth_signature As String = "CCC&" & "DDD"
oauth_timestamp = setTimeStamp()
oauth_nonce = setNounce()
'Set authorization header
Dim headerFormat As String = "OAuth oauth_consumer_key=""{0}"",oauth_nonce=""{1}"",oauth_token""{2}"",oauth_signature""{3}"",oauth_signature_method""{4}"",oauth_timestamp""{5}"""
'Dim authHeader As String = String.Format(headerFormat, Uri.EscapeDataString(oauth_consumer_key), Uri.EscapeDataString(oauth_nonce), Uri.EscapeDataString(oauth_signature), Uri.EscapeDataString(oauth_signature_method), Uri.EscapeDataString(oauth_timestamp), Uri.EscapeDataString(oauth_token), Uri.EscapeDataString(oauth_version))
'set the request
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest
Dim response As HttpWebResponse
Dim streamReader As System.IO.StreamReader
Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim requestUrl3 As String = "http://api.discogs.com/oauth/identity"
request = WebRequest.Create(requestUrl3)
request.Accept = "application/json, text/plain, */*"
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = 0
request.Method = "GET"
request.UserAgent = "user_agent"
request.Timeout = -1
request.Headers.Add("Authorization", authHeader)
Try
response = DirectCast(request.GetResponse, HttpWebResponse)
streamReader = New System.IO.StreamReader(response.GetResponseStream(), encode)
requestResult = streamReader.ReadLine
request.Abort()
streamReader.Close()
streamReader = Nothing
response.Close()
response = Nothing
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
Return requestResult
End Function
正如您所见,我发送的不仅仅是access_令牌和secret(根据示例)
所以这一直给我一个“502坏网关”的回应。。。有人知道这是什么原因吗?也许有什么想法我可以试试
仅供参考:请求访问令牌的post请求工作正常,代码如下:
Public Function makeFinalRequest()
Dim requestResult As String = ""
oauth_nonce = setNounce()
oauth_timestamp = setTimeStamp()
Dim oauth_signature As String = Form1.txtconsumer_secret.Text & Form1.txtoauth_token_secret.Text
oauth_consumer_key = Form1.txtconsumer_key.Text
oauth_signature_method = "PLAINTEXT"
Dim oauth_token As String = Form1.txtoauth_token.Text
Dim oauth_verifier As String = Form1.txtverifier.Text
Dim user_agent As String = "ll// .01 DiscogsTestApp"
oauth_token_secret = Form1.txtoauth_token_secret.Text
Dim oauth_version As String = "1.0"
'Set authorization header
Dim headerFormat As String = "OAuth oauth_consumer_key=""{0}"", oauth_nonce=""{1}"",oauth_token=""{2}"",oauth_signature=""{3}"",oauth_signature_method=""{4}"",oauth_timestamp=""{5}"",oauth_verifier=""{6}"",oauth_version=""{7}"""
Dim authHeader As String = String.Format(headerFormat, Uri.EscapeDataString(oauth_consumer_key), Uri.EscapeDataString(oauth_nonce), Uri.EscapeDataString(oauth_token), Uri.EscapeDataString(oauth_signature), Uri.EscapeDataString(oauth_signature_method), Uri.EscapeDataString(oauth_timestamp), Uri.EscapeDataString(oauth_verifier), Uri.EscapeDataString(oauth_version))
'set the request
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest
Dim response As HttpWebResponse
Dim streamReader As System.IO.StreamReader
Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim requestUrl2 As String = "https://api.discogs.com/oauth/access_token"
request = WebRequest.Create(requestUrl2)
request.UserAgent = user_agent
request.Accept = "application/json, text/plain, */*"
request.Method = "POST"
'request.ContentLength =
request.Timeout = -1
request.ContentLength = 0
request.Headers.Add("Authorization", authHeader)
Try
response = DirectCast(request.GetResponse, HttpWebResponse)
streamReader = New System.IO.StreamReader(response.GetResponseStream(), encode)
requestResult = streamReader.ReadLine
request.Abort()
streamReader.Close()
streamReader = Nothing
response.Close()
response = Nothing
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
Return requestResult
End Function
请让我知道,如果我需要发布更多的细节。。。
非常感谢您的帮助!
谢谢