Node.js 访问被拒绝。请检查凭据并重试
我尝试使用node.js上的Microsoft Graph API访问日历事件,但收到错误响应:Node.js 访问被拒绝。请检查凭据并重试,node.js,api,ms-office,office365,azure-active-directory,Node.js,Api,Ms Office,Office365,Azure Active Directory,我尝试使用node.js上的Microsoft Graph API访问日历事件,但收到错误响应: { "code": "ErrorAccessDenied", "message": "Access is denied. Check credentials and try again.", "innerError": { "request-id": "7c2...", "date": "2016-07-13T21:19:11" } } 通过以
{
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
"request-id": "7c2...",
"date": "2016-07-13T21:19:11"
}
}
通过以下方式拨打电话:
request({url : 'https://graph.microsoft.com/v1.0/me/calendarview', qs : queryParams, 'auth': {'bearer': token}}, function (error, response, body) {
...
});
该请求具有有效令牌,并且调用了…/me/via
request({url : 'https://graph.microsoft.com/v1.0/me/', 'auth': {'bearer': token}}, function (error, response, body) {
...
});
返回:
{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id":"<valid_id>",
"businessPhones":[],
"displayName":"<valid_name>",
"givenName":"<valid_name>",
"jobTitle":"<valid_title>",
"mail":"<valid_email>",
"mobilePhone":"<valid_cell>",
"officeLocation":null,
"preferredLanguage":"en-US",
"surname":"<valid_name>",
"userPrincipalName":"<valid_email>"}
以下是我在节点应用程序上设置的“对其他应用程序的权限”:
- Microsoft Azure Active Directory:
- 授权权限
- 阅读所有用户的完整配置文件
- 登录并读取用户配置文件
- 授权权限
- Microsoft图形:
- 授权权限
- 拥有对用户日历的完全访问权限
- 读取用户日历
- 授权权限
- (见下文)
- 授权权限
- 通路
- 授权权限
- Microsoft图形:
- 应用程序权限
- 在所有邮箱中读取和写入日历
- 读取所有邮箱中的日历
- 授权权限
- 登录用户
- 读取用户联系人
- 拥有对用户日历的完全访问权限
- 读取用户日历
- 登录并读取用户配置文件
- 应用程序权限
- Office Exchange 360 Online:
- 应用程序权限
- 在所有邮箱中读取和写入日历
- 读取所有邮箱中的日历
- 授权权限
- 读取用户和共享日历
- 读写用户和共享日历
- 阅读所有用户的基本配置文件
- 读取用户配置文件
- 读取用户联系人
- 读取用户日历
- 应用程序权限
- Microsoft Azure Active Directory
- 应用程序权限:无
- 授权权限
- 登录并读取用户配置文件
最终,我尝试访问租户id中的所有可保留资源并将其写入事件。我能够通过删除然后通过更新客户端id和密码重新生成应用程序来解决此问题。事实上,我能够从应用程序列表中删除本机客户端(节点)应用程序,并且仍然可以让呼叫正常工作
虽然我没有使用Fei Xue提供的参考,但我认为它对于将来调试azure to API权限将是非常宝贵的 我可以通过删除然后通过更新客户端id和密码重新生成应用程序来解决这个问题。事实上,我能够从应用程序列表中删除本机客户端(节点)应用程序,并且仍然可以让呼叫正常工作
虽然我没有使用Fei Xue提供的参考,但我认为它对于将来调试azure to API权限将是非常宝贵的 以确保令牌有足够的权限读取用户的日历。我们从中解码令牌。有日历吗。看令牌上的范围吗?谢谢费雪。我不知道这个网站,我将在将来使用它调试令牌,以确保令牌有足够的权限读取用户的日历。我们从中解码令牌。有日历吗。看令牌上的范围吗?谢谢费雪。我不知道这个网站,我将来会用它来调试令牌
var AzureOAuthStrategy = require('passport-azure-oauth').Strategy;
passport.use(new AzureOAuthStrategy({
clientId: config.live.clientID,
clientSecret: config.live.clientSecret,
tenantId: config.live.tenant,
resource: 'https://graph.microsoft.com/',
redirectURL: config.live.callbackURL
},
function(accessToken, refreshToken, profile, done) {