2015-08-29 12 views
8

Próbuję stworzyć aplikację kliencką dla GoDaddy na podstawie ich API, które tutaj zapewniają https://developer.godaddy.com Mam problem z prostym przykładem, próbuję użyć następnego kodu PHP, aby sprawdzić, czy domena jest dostępna:Błąd autoryzacji GoDdy 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(); 
} 

I cały czas otrzymuję błąd: "błąd Klient: 401". Ten sam problem mam w przypadku korzystania z biblioteki cURL. Nie znalazłem żadnej pomocy online. Potrzebuję pomocy, czy ktoś może wyjaśnić, w jaki sposób powinienem autoryzować usługę? Może muszę wysłać inne nagłówki http lub dodatkowe parametry?

+0

Jesteś pewny, że zmienne '$ myKey' i' $ mySecret' są zdefiniowane i poprawne? –

+0

@CharlotteDunois oczywiście –

Odpowiedz

9

Czy klucz i sekret są używane do produkcji? Kiedy przechodzę przez proces, domyślnie tworzy klucz/klucz tajny TEST, który moim zdaniem ma się przeciwdziałać https://api.ote-godaddy.com

Jeśli używasz klawiszy produkcyjnych, spróbuj wykonać ręczne żądanie Curl z polecenia takiego jak; coś takiego:

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

Daj nam znać, jak to działa!

+1

Oh! Używałem klucza/sekretu TEST, który mam domyślnie. Tak, masz rację, zmieniłem adres URL na api.ote-godaddy.com i teraz działa dobrze. Dziękuję za pomoc –

5

Problem polegał na tym, że używałem TESTU {KEY}: {SECRET} i ustawiłem zły adres URL.

Do testu {KEY}: {SECRET} URL musi być: https://api.ote-godaddy.com.

Również metoda sprawdzania dostępności domeny (/ v1/domains/available) nie wymaga parametru "X-Shopper-Id" w nagłówku. Działa bez niego dobrze. Z parametrem X-Shopper-Id żądanie zwraca błąd "NOT_FOUND: Nie można znaleźć określonego shopperId" (ale jest to inny problem, może nie aktywowałem jakiejś opcji)

Jeśli więc wziąć pod uwagę wszystkie zmiany, kod działa na sprawdzanie dostępności domen z przyciskiem testowym/tajne powinno być tak:

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

Niesamowite, dziękuję za opublikowanie fragmentów kodu! Naprawdę cieszę się, że masz to załatwione :) –

+0

Czy jest dostępna piaskownica dla godaddy, gdzie mogę przetestować moje połączenia api za pomocą testowego klucza api.Godaddy dostarcza testowy klucz API, ale to nie działa również dla mnie, gdy próbuję kupić domenę za pomocą API połączenie. – arvind

0

używam php i zwijania.

$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)); 

Powyższy kod działa dobrze dla mnie.

Powiązane problemy