2013-02-19 36 views
1

摆脱蔚蓝的媒体服务REST API访问令牌我在PHP下面的代码:无法使用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); 

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

+0

'generateData()'返回什么?它是'json'格式? – 2013-02-19 12:20:04

回答

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

+0

private function generateData($ arrData){ return implode('&',$ arrData); }只是返回这个。 $数据是空的,没有任何错误。我正在使用Windows XP。 – 2013-02-19 12:28:46

+0

@ShraddhaBandekar我简化了一些东西。 – 2013-02-19 12:33:16

+0

我尝试了上面的代码,它给了我这个:从API SSL证书问题获取新的令牌,验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败。我不了解CA证书以及如何解决此错误。 – 2013-02-19 12:40:24