2015-08-29 3 views
8

Я пытаюсь разработать клиентское приложение для GoDaddy на основе их API, которые они здесь предоставляют 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

Есть ли ключ и секрет, который вы используете для производства? Когда я перехожу к процессу, по умолчанию он создает ключ/секрет TEST, который, как мне кажется, должен быть против https://api.ote-godaddy.com

Если вы используете производственные ключи, попробуйте выполнить ручной запрос Curl из команды like; что-то вроде:

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

Дайте нам знать, как это работает!

+1

Oh! Я использовал TEST key/secret, который у меня есть по умолчанию. Да, вы правы, я изменил url на api.ote-godaddy.com, и теперь он работает хорошо. Спасибо за помощь –

5

Проблема заключалась в том, что я использовал TEST {KEY}: {SECRET} и установил неверный URL.

Для теста {KEY}: {SECRET} URL должен быть: https://api.ote-godaddy.com.

Также метод проверки доступности домена (/ v1/domains/available) не нуждается в параметре «X-Shopper-Id» в заголовке. Он работает без него. С запросом параметра X-Shopper-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

Awesome, спасибо за публикацию фрагментов кода! Действительно рад, что вы его разобрали :) –

+0

Есть ли какая-нибудь песочница для godaddy, где я могу проверить свои вызовы api, используя тестовый ключ api. 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)); 

код выше подходит для меня.