Deepcrawl身份验证curl响应是否为null?

时间:2018-10-03 16:30:57

标签: php laravel curl

要验证API调用,必须首先生成一个会话以获取令牌。然后,您必须将会话令牌作为X-Auth-Token标头的值发送,以对API调用进行身份验证。

要创建会话,您首先需要手动生成一个API密钥。这是可以在“ API访问”页面中生成的键/值对。单击生成新的API密钥时,将显示一个弹出窗口,其中包含API密钥值,并且在活动密钥表中可以找到API密钥ID。然后,它通过POST调用中的基本身份验证发送到会话路由。

我已经遵循了deepcrawl的Api文档,但是我在做什么错呢?

我有X-Auth-TokenAPI KEY ID应该放在哪里?

$deephead = "X-Auth-Token: asdjasiojqoieuqiouwqpofoqwojeq"; 

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.deepcrawl.com/sessions");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, $deephead);

// Get the response
$response = curl_exec($ch);

// Close cURL connection
curl_close($ch);

// Decode the response (Transform it to an Array)
$result = json_decode($response);

//debug the response
dd($result); 

我什至无法进入CURLOPT_GET,因为我的post只得到空值。任何想法/想法我该如何解决。先感谢您。

1 个答案:

答案 0 :(得分:1)

DeepCrawl API

看起来您正在尝试生成令牌,看起来好像已经拥有了。

  

要验证API调用,您必须首先生成一个会话以获取   令牌。然后,您必须发送会话令牌作为   X-Auth-Token标头用于验证API调用。

     

要创建会话,您首先需要手动生成一个API密钥。   这是可以在“ API访问”页面中生成的键/值对。   当您单击Generate New API Key时,将显示一个弹出窗口,其中包含   API密钥值,并在活动密钥表中找到该API   密钥ID。然后通过POST调用中的基本身份验证将其发送到   会议路线。

     

curl -X POST -u '123:abcdef' https://api.deepcrawl.com/sessions { "token":"abcdef123", "_user_href":"/users/example-user", ... }

不是最清晰的,但是就在那里。

$headers = [
    'Content-Type: application/x-www-form-urlencoded',
    'accept: text/html'
];
$username='yourusername';
$password='supersecret';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.deepcrawl.com/sessions");
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "root=1");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

// Get the response
$response = curl_exec($ch);

// Close cURL connection
curl_close($ch);

// Decode the response (Transform it to an Array)
return json_decode($response);

这将返回类似的内容

{
  "token":"abcdef123",
  "_user_href":"/users/example-user",
  ...
}

由于您已经有了令牌,因此不需要点击会话。您可以拨打电话。

$headers = [
    'X-AUTH-TOKEN: your-api-key',
    'accept: text/html'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.deepcrawl.com/system_statuses");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

// Get the response
$response = curl_exec($ch);

// Close cURL connection
curl_close($ch);

// Decode the response (Transform it to an Array)
return json_decode($response);