2015-08-29 160 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)); 

上面的代码对我来说工作正常。