【问题标题】:Unable to get access token from azure media services REST API using PHP无法使用 PHP 从 azure 媒体服务 REST API 获取访问令牌
【发布时间】:2013-02-19 12:14:00
【问题描述】:

我在 php 中有以下代码:

define("TOKEN_URL", "https://wamsprodglobal001acs.accesscontrol.windows.net/v2/OAuth2-13");



 $arrData = array(
                'grant_type=client_credentials',
                'client_id='.CLIENT_ID,
                'client_secret='.urlencode(ACCESS_KEY),
                'scope=urn%3aWindowsAzureMediaServices'
            );


            $arrHeader = array(
                'Content-length:'.strlen($this->generateData($arrData))
            );

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, TOKEN_URL);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $this->generateData($arrData));
            curl_setopt($ch, CURLOPT_HTTPHEADER, $arrHeader);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $data = curl_exec($ch);
            curl_close($ch);
            $arrToken = json_decode($data);

我无法获取令牌代码。请任何人都可以检查什么可能是错的?

【问题讨论】:

  • generateData() 返回什么?是json 格式化了吗?

标签: php rest azure azure-media-services


【解决方案1】:

可能有几个问题:

  1. 您可以简化一些事情并使用http_build_query()

    $data = http_build_query(array(
        'grant_type' => 'client_credentials',
        'client_id' => CLIENT_ID,
        'client_secret' => ACCESS_KEY,
        'scope' => 'urn:WindowsAzureMediaServices',
    ));
    $ch = curl_init(TOKEN_URL);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if (($res = curl_exec($ch)) === false) {
        die(curl_error($ch));
    }
    $arrToken = json_decode($res);
    
  2. 如果有错误,首先要确定你是否有updated list of CA certificates

【讨论】:

  • 私有函数 generateData($arrData){ return implode('&', $arrData); } 只是返回这个。 $data 为空,没有任何错误。我使用的是 Windows XP。
  • @ShraddhaBandekar 我已经简化了一些事情。
  • 我尝试了上面的代码,它给了我这个:从 API SSL 证书问题获取新令牌,验证 CA 证书是否正常。详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败。我不了解 CA 证书以及如何解决此错误。
  • @ShraddhaBandekar 我添加了一个链接,指向讨论它的旧答案。
  • 谢谢你能解决这个问题。但仍然存在验证失败,提示客户端无效,代码 ACS50012。只是为了确认这是正确的客户端 ID:tstms.origin.mediaservices.windows.net?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2020-01-22
  • 1970-01-01
  • 2018-01-08
相关资源
最近更新 更多