[英]Outlook REST API 403 error while trying to fetch user emails
我正在尝试使用Outlook REST API从用户的Outlook邮件中提取电子邮件。 我已经能够成功验证用户身份并获取用户访问令牌,但是,当我尝试对Outlook REST API进行AJAX
调用时,出现以下错误:
GET https://outlook.office.com/api/v2.0/me/messages?callback=jQuery31008093694845457056_1490285639120 403 (Forbidden)
另外,我从AJAX
error
函数回调中得到以下错误:
Object {readyState: 4, status: 404, statusText: "error"}
这是我的代码:
var ADAL = new AuthenticationContext({
instance: 'https://login.microsoftonline.com/',
tenant: 'common',
clientId: '', //Intentionally left blank here
redirectUri: 'http://localhost:8383/',
callback: userSignedIn,
popUp: true
});
function signIn() {
ADAL.login();
}
function userSignedIn(err, token) {
console.log('userSignedIn called');
if (!err) {
console.log(token); //This works!
fetchUserSentMails(token);
} else {
console.error("error: " + err);
}
}
function fetchUserSentMails(token) {
var user = ADAL.getCachedUser();
console.log(user.profile.name); //This works!
$.ajax({ //This doesn't work
type: 'GET',
crossDomain: true,
url: 'https://outlook.office.com/api/v2.0/me/messages',
dataType: 'jsonp',
headers: {'Authorization': 'Bearer ' + token},
success: function (res) {
console.log(res);
},
error: function (x, t, m) {
console.log(x);
console.log(t);
console.log(m);
}
});
}
我究竟做错了什么??
最可能的答案是您的令牌没有适当的范围。 在https://jwt.io解析令牌,然后查看scp
声明中的内容。
看来您缺少对AcquireToken
的呼叫。 login
方法仅用于login
用户并获取其身份,它不提供访问令牌。 您需要这样的东西:
ADAL.acquireToken("https://outlook.office.com", function(error, accessToken){
if (error) {
console.log('ERROR: ' + JSON.stringify(error));
} else {
fetchUserSentMails(accessToken);
}
}
我看到您收到超时错误。 我在超时方面有完全相同的问题,我只能通过操纵adal.js库来解决此问题。 在此库中,超时为6秒,对于某些本地加载的应用程序来说,这似乎非常紧张。 为了对其进行快速测试,您可以在adal.js中找到LOADFRAME_TIMEOUT:'6000'并将其替换为LOADFRAME_TIMEOUT:'30000',这将使您有30秒的时间来加载应用程序。 我希望这个对你有用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.