2017-02-02 1 views
1

Ich habe ein Problem mit dem Senden Bearer Token an die One Note API.One Note Api lehnt Bearer Token ab, Fehler 401

String returnUri = "https://login.live.com/oauth20_token.srf"; 
HttpClient client = HttpClientBuilder.create().build(); 
HttpPost tokenRequest = new HttpPost(returnUri); 
tokenRequest.setHeader(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded"); 
tokenRequest.setEntity(new UrlEncodedFormEntity(Connection.getParametersForURLBody(), Consts.UTF_8)); 
tokenRequest.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0"); 
HttpResponse tokenResponse = client.execute(tokenRequest); 
HttpGet getTopFiveNotebooks = new HttpGet("https://www.onenote.com/api/v1.0/me/notes/notebooks?top=5"); 

getTopFiveNotebooks.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + Connection.getValueByKey("access_token", Connection.getTokenInJson(tokenResponse))); 

Ich habe die Bearer Token und der Header des HttpGet-Request sieht wie folgt aus, wenn ich es im Debug-Modus aussehen:

Token in the HtppGet-Header

Aber wenn ich versuche, die get auszuführen, die API gibt mir einen 401 Unauthorized Fehler.

Mein Bereich ist scope=wl.basic+onedrive.readwrite, also sollte das Token alle Berechtigungen haben, die es benötigt.

Update: Wenn ich in https://apigee.com/onenote/embed/console/onenote/ melde dich mit meinem Microsoft-Konto und kopieren Sie die Zugriffstoken von dort in diesem Stück Code:

getTopFiveNotebooks.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + acces-key-from-the apigee-console) 

führt sie die get und gib mir Status 200 zurück statt 401.

Also ist mein Berechtigungsbereich falsch?

Bearbeiten: Mein Bereich war falsch.

+0

haben Sie Lösung dieses Problems gefunden? –

Antwort

0

Hier sind einige Fälle, in denen Fehler passieren könnte:

Aufmerksamkeit
  1. Bitte zahlen Sie die Zeichenfolge von Bereichen zu codiert werden müssen, so statt + von sollten Sie %20 verwenden. stellen Sie sicher,
  2. Sie auch, dass Sie mit dieser Funktion verwendet, etwas zurückgibt: Connection.getTokenInJson(tokenResponse)
  3. Und versuchen, diese Erlaubnis Umfang, die gut für mich funktioniert:

    "office.onenote%20office.onenote_create%20office.onenote_update_by_app%20office.onenote_update" 
    
Verwandte Themen