2013-02-19 83 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