嘿,我想弄清楚如何为REST API POST调用使用OAuth授权令牌。
文件规定:
With a valid access token, your app can make calls to any Yammer API endpoint by sending the access token as a “Bearer” token in the “Authorization” request header.
GET /api/v1/messages/following.json HTTP/1.1
Host: www.yammer.com
Authorization: Bearer abcDefGhiFor
more details on the “Bearer” token refer to [enter link description here][1]
If the access token expires or the user de-authorizes your app, the API request will return an HTTP 401 with the following error in the body of the response.
{
"response": {
"message": "Token not found.",
"code": 16,
"stat": "fail"
}
}
如果发生此错误,您的应用程序可以通过重新运行相应的流来请求新的访问令牌。
目前我的VB. net代码是这样的:
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader
Dim address As Uri
Dim data As StringBuilder
Dim byteData() As Byte
Dim postStream As Stream = Nothing
address = New Uri("https://www.yammer.com/api/v1/messages.json")
request = DirectCast(WebRequest.Create(address), HttpWebRequest)
request.Method = "POST"
request.Headers("Authorization") = "Bearer " & yammerAPI.userToken
request.ContentType = "application/json"
request.Host = "www.yammer.com"
Dim body As String = "test"
Dim replied_to_id As Integer = 123456789
Dim group_id As Integer = 123456789
data = New StringBuilder()
'data.Append("&replied_to_id=" & HttpUtility.UrlEncode(replied_to_id))
data.Append("group_id=" & HttpUtility.UrlEncode(group_id))
data.Append("&body=" & HttpUtility.UrlEncode(body))
byteData = UTF8Encoding.UTF8.GetBytes(data.ToString())
request.ContentLength = byteData.Length
Try
postStream = request.GetRequestStream()
postStream.Write(byteData, 0, byteData.Length)
Finally
If Not postStream Is Nothing Then postStream.Close()
End Try
Try
response = DirectCast(request.GetResponse(), HttpWebResponse)
reader = New StreamReader(response.GetResponseStream())
Debug.Print(reader.ReadToEnd())
Finally
If Not response Is Nothing Then response.Close()
End Try
我不断收到一个错误:远程服务器返回一个错误:(401)未经授权。
我在下面的帖子中发现了这一点:
Yammer API要求OAuth数据位于标头中。如果您查看他们获取数据的示例,您将看到请求如下所示。
GET/api/v1/messages/favorites_of/1234 HTTP/1.1主机:www.yammer。通用域名格式
授权:OAuthoauth_consumer_key="KsTROcNF1Fx3e1PwA",oauth_token="vlVH7A7DOm9wxhdv58A",oauth_signature_method="PLAINTEXT",oauth_timestamp="1297383841092",oauth_nonce="1047685618",oauth_verifier="E4F8",oauth_signature="yPsEvDnNPIA8xGCFLvMJ73K0DD9ivMpATJeFOSO&fSFh9UPkHQ6oRwK5OTne33ltd nSnbQ9XrAhA72heg"
OAuth数据位于授权标头中,而不是URL中。URL中只有在执行授权时才有OAuth数据。
任何帮助将是伟大的理解这更多!
我最近使用Oauth的经验表明,内容类型应该是:
请求。ContentType=“application/x-www-form-urlencoded”请求。Method=“POST”请求。ContentLength=byteArray。长度
而不是请求。ContentType="应用程序/json"
我已经使用Jhipster生成了一个带有安全选项OAuth2.0/OIDC身份验证的应用程序。我按照http://www.jhipster.tech/security/#Okta的说明重新配置了该应用程序,使用Okta而不是keycloak。所有工作都按预期进行,登录流也按预期执行。 现在我想使用OAuth2.0access_tokens从其他客户机(Postman、Wordpress)访问我的a
试图让OAuth2谷歌登录工作,这是我的应用程序发出的原始请求: : : : : 这是回应: 状态: null 对此的帮助将不胜感激。我试图在我的应用程序中设置OAuth2支持的“用X登录”功能,已经让脸书和推特没有问题地工作,也想让谷歌工作,但如果我不能解决这个问题,我恐怕我将不得不放弃谷歌Auth。
这是云运行中的bug,还是我们需要做一些不同的事情来获得完整的承载令牌?
我目前正在客户端应用程序上使用和。我用另一个请求回调()运行一个axios请求(),在第一个请求的响应中,我收到一个新的令牌。我尝试在回调的headers载体中设置这个新内标识。这不起作用:在回调()时,没有设置新的令牌,并且在头中没有设置更多的授权承载。 你知道问题出在哪里吗?
我已经编写了一个云函数,该函数接收一个Base64字符串并将其传递到Google Cloud Vision API中,我还在客户端上编写了一个函数,该函数通过HTTP调用Firebase云函数。 虽然数据可以很好地从客户端传递到云功能,但服务器对Google Vision API的请求不起作用。我得到一个状态码错误。 我很确定这与授权承载令牌有关,因为在shell中使用环境变量运行它就可以了。顺便
我将授权:承载{令牌}作为HTTP请求传递给我的SymfonyRest控制器。 我的请求: 在我的控制器内: 由于某种原因,当我使用Symfony的请求方法时,授权标头对我的控制器不可用。当我使用PHP的getallheaders()时,授权头将按预期显示。你知道为什么Symfony没有看到吗? 谢谢