我想用来自API的一些数据在我的网站上创建一个页面。该网站是使用Wordpress建立的。
我尝试了在Web上找到的各种代码/功能,但没有成功。
API要求我按用户,密码或令牌(我更喜欢令牌)登录。
我是API和PHP的新手,我什至不知道从哪里开始。
如果以前有人使用过,我想从Exoclick API中获取数据。
从Exoclick的API接口上,我可以看到请求是通过curl发出的,我以前从未使用过它,并且我不想这样做。这是一个例子
curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer tokenhere' 'https://api.exoclick.com/v2/statistics/publisher/country?'
在API手册中,我找到了用于登录的代码,但是将其放在随机页面中进行测试,只会使我的网站崩溃:
<?php
// Include Request and Response classes
$url = 'https://api.exoclick.com/v2/login';
$params = array(
'api_token' => 'tokenhere'
);
// Create a new Request object
$request = new Request($url, 'POST', $params);
// Send the request
$request->send();
// Get the Response object
$response = $request->getResponse();
if($response->getStatusCode() == 200) {
// Retrieve the session token details
$token = $response->getBodyDecoded();
print_r($token);
}
else {
echo $response->getStatusCode() . PHP_EOL;
echo $response->getReasonPhrase() . PHP_EOL;
echo $response->getBody() . PHP_EOL;
}
?>
答案 0 :(得分:0)
如果您不熟悉API和相关的库,我认为您应该首先使用cURL来掌握一切。另外,使自己熟悉API的一种好方法是使用Postman。您也可以使用它在不同的代码库中生成某些API调用。
在您的情况下,首先需要获取承载令牌,以便可以请求所需的数据。在我的示例中,我将向您展示两个函数,您可以使用从发出初始POST请求中获得的令牌向/ campaigns端点发出GET请求。
最终,解决问题的方法取决于很多因素,例如您要获取的数据类型以及显示方式。您是否可以通过单击按钮,页面加载等来请求数据?
我还建议您熟悉Ajax,以及如何使用jQuery / JS和Wordpress发出Ajax请求,因为这不仅可以帮助您使用此API,还可以帮助您使用其他API。另外,还将学习如何遍历发送回给您的数据,无论是使用PHP对象还是使用数组。
这需要一些练习,但是首先需要将一些有用的小片段拼凑在一起,例如下面的代码,您至少可以获取数据并将其回显到页面上。
<?php
// A function that will make a GET request to the /campaigns endpoint
function get_data_from_api() {
// Run the function that will make a POST request and return the token
$exoclick_token = get_token_from_api();
$new_token = $exoclick_token->token;
$auth_array = array(
"Authorization:",
"Bearer",
$new_token
);
$new_token = implode(" ", $auth_array);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.exoclick.com/v2/campaigns",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => array(
$new_token,
"Content-Type: application/json",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
$data = json_decode($response, true);
// do something with the data
print_r($data);
}
function get_token_from_api() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.exoclick.com/v2/login",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n\"api_token\": \"[ADD YOUR TOKEN]\"\n}",
CURLOPT_HTTPHEADER => array(
"Accept: */*",
"Cache-Control: no-cache",
"Connection: keep-alive",
"Content-Type: application/json",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
// Decode the response from the API
$decoded_response_object = json_decode($response);
curl_close($curl);
// Return the decoded response so you can use it to make another request
return $decoded_response_object;
}
// Run the initial function
get_data_from_api();
?>