私はトークンを返すPHPスクリプトを作成しました。私はそれが最速のソリューションだと思います。ここで
は多分誰かのために有用であろう、コードです:
<?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;
}
最近のほとんどのブラウザが原因CORSにコールの種類をブロックします。 AJAXが呼び出せる中間層APIを構築する必要があります。この中間層APIは、API上のCORS設定を介してWebアプリケーションを信頼します。 Azure API ManagementまたはAzure関数をカスタムロジックのホストとして使用することをお勧めします。これは、Media Servicesアプリケーションの呼び出しに使用されるサービス主体の資格情報を保護するための良い考えです。 – johndeu
ありがとう@johndeu私はそれが最速の解決策になると思います。 – Alex91ckua