【发布时间】:2017-02-06 16:09:44
【问题描述】:
我在向 One Note API 发送不记名令牌时遇到问题。
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)));
我得到Bearer Token 和HttpGet-Request 的标头看起来像这样,如果我在调试模式下查看它:
但是当我尝试执行获取时,API 给了我一个401 Unauthorized 错误。
我的范围是scope=wl.basic+onedrive.readwrite,所以令牌应该拥有它需要的所有权限。
更新:如果我使用我的 microsoft 帐户登录 https://apigee.com/onenote/embed/console/onenote/ 并将访问令牌从那里复制到这段代码中:
getTopFiveNotebooks.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + acces-key-from-the apigee-console)
它执行获取并返回给我Status 200 而不是401。
那么我的权限范围错了吗?
编辑:我的范围是错误的。
【问题讨论】:
-
你找到解决这个问题的方法了吗?
标签: java apache apache-httpclient-4.x onenote onenote-api