我在从Microsoft图表(对于OneNote API)请求资源时遇到问题。我不确定我是否正确获取了访问令牌。我使用隐式流,就像Angular 5前端应用程序一样。
window.location.href = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize?'
+ 'client_id=' + CLIENT_ID
+ '&response_type=token'
+ '&redirect_uri=' + REDIRECT_URI
+ '&scope=' + SCOPE
+ '&response_mode=fragment';
我正在根据文档使用范围'Notes.ReadWrite.All',它似乎工作正常,因为我在登录后获得令牌。
这是我试图请求笔记本的方式:
const headers = new HttpHeaders({
'Content-type': 'application/json; ' + 'charset=utf-8',
'Authorization': 'Bearer ' + ACCESS_TOKEN,
});
this.http.get('https://graph.microsoft.com/v2.0/me/onenote/notebooks', {headers: headers}).subscribe(
data => console.log(data),
err => console.log(err)
);
但我一直以错误结束:
status: 401,
statusText: "Unauthorized"
code: "InvalidAuthenticationToken",
message: "CompactToken parsing failed with error code: 80049403"
感觉解析令牌时遇到问题,或者令牌完全不正确。提前感谢您的帮助。
答案 0 :(得分:1)
传统上,我使用2个电话完成了这项工作。第一次电话
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
返回您可以使用的代码,以进一步请求访问令牌。
所以在这个初始授权之后 - 我使用了以下端点来请求访问令牌:
https://login.microsoftonline.com/common/oauth2/v2.0/token
同时提供授权后收到的原始代码以及该请求。作为对此的响应,您将收到实际的访问令牌(以及在令牌到期后使用的刷新令牌)。这可以进一步用于您的实际数据请求(有效期为60分钟)。