微软 Azure 媒体服务。无法使用 REST API 获取令牌(仅限应用程序)

Microsoft Azure Media Service. Unable to get token (app-only) by using REST API

我正在构建简单的 Angular2 应用程序,给定用户可以在其中通过 Microsoft Azure 媒体服务 REST 上传视频 API。

我正在尝试使用此请求获取令牌:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=client_credentials&resource=https://rest.media.azure.net/&client_id=<application id>&client_secret=<password you selected for authentication>" https://login.microsoftonline.com/<Azure AD Tenant ID>/oauth2/token?api-version=2.11

但它不会通过 AJAX 工作(那是因为 CORS),那么有没有其他简单的方法来获取仅限应用程序的令牌?

我已经创建了 php 脚本,其中 returns 标记,我认为这是最快的解决方案。

这是代码,也许对某人有用:

<?php

define(APP_CLIENT_ID, '<client_id>');
define(CLIENT_SECRET, '<client_secret>');
define(AD_TENANT_ID, '<tenant_id>');
define(RESOURCE_URL, 'https://rest.media.azure.net');

function curlTokenRequest() {

    $url = "https://login.microsoftonline.com/".AD_TENANT_ID."/oauth2/token";

    $request = "grant_type=client_credentials&resource=".RESOURCE_URL."&client_id=".APP_CLIENT_ID."&client_secret=".CLIENT_SECRET;

    $ch = curl_init($url);
    $options = array(
        CURLOPT_RETURNTRANSFER => true,         // return web page
        CURLOPT_HEADER         => false,        // don't return headers
        CURLOPT_FOLLOWLOCATION => false,         // follow redirects
        // CURLOPT_ENCODING       => "utf-8",           // handle all encodings
        CURLOPT_AUTOREFERER    => true,         // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 200,          // timeout on connect
        CURLOPT_TIMEOUT        => 200,          // timeout on response
        CURLOPT_POST            => 1,            // i am sending post data
        CURLOPT_POSTFIELDS     => $request,    // this are my post vars
        CURLOPT_SSL_VERIFYHOST => 0,            // don't verify ssl
        CURLOPT_SSL_VERIFYPEER => false,        //
        CURLOPT_VERBOSE        => 1,
        CURLOPT_HTTPHEADER     => array(
            "Content-Type: application/x-www-form-urlencoded"
        )

    );

    curl_setopt_array($ch,$options);
    $data = curl_exec($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    //echo $curl_errno;
    //echo $curl_error;
    curl_close($ch);

    http_response_code($httpcode);
    header('Content-Type: application/json');
    header('Access-Control-Allow-Origin: *');

    return $data;
}