Bearer-token in der (OAuth Authorization request-header für die REST-API-POST-Aufruf

Hey, ich bin versucht, herauszufinden, wie dies zu tun OAuth authorization token für einen REST-API-POST-Aufruf.

Den Dokumente-Zustand:

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"
  }
}

Ihre app anfordern können Sie eine neue access-token durch erneutes ausführen der entsprechenden fließen, wenn dieser Fehler Auftritt.

Derzeit meine VB.net code ist:

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

Ich erhalte eine Fehlermeldung von: Der Remoteserver hat einen Fehler zurückgegeben: (401) nicht autorisiert.

Ich fand dies in einem folgenden Stackoverflow-posting:

Den Yammer-API erfordert die OAuth-Daten werden in der Kopfzeile. Wenn Sie sich bei Ihrem Beispiel um Daten, sehen Sie die Anfrage aussieht.

GET /api/v1/Nachrichten/favorites_of/1234 HTTP/1.1
HOST: www.yammer.com

Authorization: OAuth oauth_consumer_key="KsTROcNF1Fx3e1PwA",oauth_token="vlVH7A7DOm9wXuHdv58A",oauth_signature_method="PLAINTEXT",oauth_timestamp="1297383841092",oauth_nonce="1047685618",oauth_verifier="E4F8",oauth_signature="yPsEvDnNPIA8xGCFLvMJ73K0DD9ivMpAtjefoso%26fSFh9UPkHQ6oRwK5OTne33ltnSnbQ9xraha72heg"

Die OAuth-Daten ist der in der Authorization-header und nicht in der URL. Die einzige Zeit, die Sie haben alle die OAuth-Daten in der URL, wenn Sie das genehmigen.

Jede Hilfe würde groß sein, um das zu verstehen, mehr!

  • Wie sind Sie mit der Beschaffung yammerAPI.userToken?
  • Gehen wenn jeder Zustand (mit webbrowser). Anmeldung in yammer, umgeleitet über meine redirect-link der app die Orte der code am Ende des (blahblah.com/?code=XYZ). Dann nehme ich diesen code und dies Dim url As String = "yammer.com/oauth2/access_token.json?client_id=" & clientID & "&client_secret=" & clientSecret & "&code=" & authorizedToken und analysieren Sie die JSON und erhalten Sie access_token aus, dass. Die access_token ist meine yammerAPI.userToken.
  • Blick auf das code-Beispiel in [diese Frage][1]. [1]: stackoverflow.com/questions/14188938/...
  • Könnten Sie mir etwas mehr Informationen über, wie zu gehen über die Suche nach dem oauth_consumer_key, oauth_timestamp, oauth_nonce, oauth_verifier & oauth_signature?? Alle yammer Dokumente besagen, dass es nur noch zum senden der Träger + token ist genug in den header?
  • Wenn Sie Folgen Sie den Yammer docs in der Einleitung reden Sie über die Einrichtung der OAuth, so dass Sie bekommen können, die benötigt OAuth-client-ID, etc. Sobald die Genehmigung ist setup verwenden Sie den Träger, um Daten bitten.
InformationsquelleAutor StealthRT | 2013-08-30
Schreibe einen Kommentar