我正在尝试从 Azure 获取访问令牌。我正在关注 this 教程,但问题是那家伙正在使用邮递员。它也适用于邮递员,但它在 javascript 中失败,我不明白为什么。
function getAccessToken() {
fetch(`${loginUrl}${tenantId}/oauth2/token`, {
method: "POST",
body: JSON.stringify({
grant_type: "client_credentials",
client_id: clientId,
client_secret: clientSecret,
resource: resource,
})
})
.then((response) => {
console.log(JSON.stringify(response));
})
.catch((err) => {
console.log(JSON.stringify(err));
});
}
凭据很好,即 clientId、secret、tennantid 等。 我也在 PowerShell 中尝试过,它奏效了:
Invoke-RestMethod `
-Uri "$loginUrl$tenantId/oauth2/token" `
-Method Post `
-Body @{"grant_type"="client_credentials"; "resource" = $resource; "client_id" = $clientId; "client_secret" = $clientSecret }
但是在 js 上我得到以下错误:
<块引用>从源“null”获取“https://login.microsoftonline.com/myTenantId/oauth2/token”的访问权限已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头存在于请求的资源。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
我目前正在 HTML 文件中运行此脚本以进行测试。