2015-08-29 159 views
8

我想根據他們在這裏提供的API爲GoDaddy開發客戶端應用程序https://developer.godaddy.com 而且我有一個簡單示例的問題,我嘗試使用下一個PHP代碼來檢查域是否可用:Godaddy api授權錯誤

use GuzzleHttp\Client; 
try { 
    $client = new Client([ 
     'base_uri' => 'https://api.godaddy.com', 
    ]); 

    $responce = $client->get(
     '/v1/domains/available?domain=example.guru', 
     [ 
      'headers' => [ 
       'Authorization' => "sso-key $myKey:$mySecret", 
       'X-Shopper-Id' => "$myID", 
       'Accept' => 'application/json', 
      ] 
     ] 
    ); 
    echo $responce->getBody(); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 

而且我總是收到錯誤:「客戶端錯誤:401」。與使用cURL庫有同樣的問題。我沒有找到任何在線支持。 我需要幫助,有人可以解釋我應該如何授權他們的API服務?也許我需要發送任何其他HTTP頭或附加參數?

+0

你確定變量'$ myKey'和'$ mySecret'是否定義正確? –

+0

@CharlotteDunois當然 –

回答

9

您是用於生產的關鍵和祕密嗎?當我經歷這個過程時,默認情況下它會創建一個測試密鑰/祕密,我認爲這是針對https://api.ote-godaddy.com

如果您正在使用生產密鑰,請嘗試從命令執行手動Curl請求;例如:

curl -H 'Authorization: sso-key {KEY}:{SECRET}' -H 'Content-Type: application/json' https://api.godaddy.com/v1/domains/available?domain=example.guru' 

讓我們知道它是如何工作的!

+1

哦!我正在使用默認的TEST鍵/祕密。是的,你是對的,我已經將url更改爲api.ote-godaddy.com,現在它運行良好。感謝您的幫助 –

5

問題是我正在使用TEST {KEY}:{SECRET}並設置了錯誤的網址。

對於測試{KEY}:{SECRET} URL必須爲:https://api.ote-godaddy.com

此外,檢查域可用性(/ v1/domains/available)的方法不需要頭中的參數'X-Shopper-Id'。沒有它,它運作良好。隨着參數X-購物-ID請求返回錯誤「NOT_FOUND:指定shopperId找不到」(但它的其他問題,也許我沒有激活某些選項)

因此,如果考慮到所有的變化,使用測試密鑰/祕密檢查域可用性的工作代碼應如下所示:

use GuzzleHttp\Client; 
try { 
    $client = new Client([ 
     'base_uri' => 'https://api.ote-godaddy.com' 
    ]); 

    $responce = $client->get(
     '/v1/domains/available?domain=example.guru', 
     [ 
      'headers' => [ 
       'Authorization' => "sso-key $myKey:$mySecret", 
       'Accept' => 'application/json', 
      ] 
     ] 
    ); 
    echo $responce->getBody(); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
+0

真棒,感謝您發佈您的代碼片段!真的很高興你把它整理出來:) –

+0

是否有任何沙盒可用於godaddy,我可以使用測試api key.Godaddy提供測試api密鑰,但是那不工作,以及每當我試圖購買域使用API呼叫。 – arvind

0

我正在使用php和curl。

$domain = "jaisinghverma.com";<br> 
$apiURL = 'https://api.ote-godaddy.com/v1/domains/available? 
domain='.$domain.'&checkType=FULL&forTransfer=false';<br> 
$headers = array(
    'Accept: application/json', 
    'Authorization: sso-key 2s83RziEFz_WKH7uMvTTgWX5RqNxADNTe:WKHARxNruKHyL3XbjoMp44', 
);<br> 
$ch = curl_init();<br> 
curl_setopt($ch, CURLOPT_URL, $apiURL);<br> 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br> 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);<br> 
$server_output = curl_exec ($ch);<br> 
curl_close ($ch);<br> 
print_r(json_decode($server_output)); 

上面的代碼對我來說工作正常。