我正在尝试开发一个能够访问我的Outlook.com邮件的节点应用程序。
我试图以一种不需要我输入凭据的方式来做,应用程序将知道它们(用户名和密码)。我并不太担心将它们存储在我的应用程序的配置中。
我使用的是simple-oauth2,但我一直收到错误。以下是尝试检索Oauth令牌的代码:
const credentials = {
client: {
id: this.appId,
secret: this.appSecret,
},
auth: {
tokenHost: "https://login.microsoftonline.com",
authorizePath: "common/oauth2/v2.0/authorize",
tokenPath: "common/oauth2/v2.0/token",
},
};
const oathClient = oauth2.create(credentials);
const tokenConfig = {
username: "zzz@outlook.com",
password: "xxxxx",
scope: "Mail.Read",
};
const result = await oathClient.ownerPassword.getToken(tokenConfig);
const token = oathClient.accessToken.create(result);
但是,当调用get token时,我得到以下响应:
"error": "invalid_grant",
"error_description": "AADSTS70000: The grant is not supported by this API version\r\nTrace ID: 91935472-5d7b-4210-9a56-341fbda12a00\r\nCorrelation ID: 6b075f4e-b649-493e-a87b-c74f0e427b47\r\nTimestamp: 2017-08-19 14:00:33Z",
"error_codes": [ 70000],
我已在apps.dev.microsoft.com
中找到该应用程序为其添加了一个平台(Web API)。 在Microsoft Grah上添加了“Mail.Read”权限
我正在使用我在那里生成的apikey和秘密。
谷歌搜索看起来我发现连接的所有示例都使用客户端证书。是否可以使用API凭证来使用API?
如果唯一的方法是使用证书,有没有办法可以使用simple-oauth2呢?
答案 0 :(得分:0)
好吧,看起来我使用了错误的方法。
尝试使用simple-ouath2上的ClientCredentials模块及其workign进行访问:
const tokenConfig = {
scope: "https://graph.microsoft.com/.default",
};
const result = await oathClient.clientCredentials.getToken(tokenConfig);