Я пытаюсь получить некоторые аналитические данные через API addthis (https://www.addthis.com/academy/addthis-analytics-api/), который отлично работает через веб-браузер, когда я ввожу имя пользователя и пароль, но не могу понять, как я смогу сделать это как ежедневную работу cron. На странице разработки addthis написано, что вы смотрите методы аутентификации, но эта ссылка просто возвращает вас к началу той же страницы, и Googling, похоже, не находит примеров того, как выполнить аутентификацию программно.
До сих пор я пытался добавить заголовки и отправлять данные как поля записей, но отчасти проблема в том, что я не знаю, какие имена полей мне следует использовать, поэтому я ворочаюсь в темноте. Кто-нибудь еще имел опыт работы с addthis API и знает, как получить доступ через скрипт?
Вот попытка использования заголовков
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://api.addthis.com/analytics/1.0/pub/shares/url.json?pubid=PUB_ID&period=day');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$headers = array();
$headers[] = "userid: $user";
$headers[] = "password: $pass";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
… а затем с помощью полей POST
$data = array('userid' => $user, 'password' => $pass);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://api.addthis.com/analytics/1.0/pub/shares/url.json?pubid=PUB_ID&period=day');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Content-Length: '.strlen($data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
Вы можете передать аутентификацию имени пользователя и пароля в URL. Пожалуйста, смотрите пример кода:
$url = 'https://api.addthis.com/analytics/1.0/pub/shares/url.json?pubid=PUB_ID&period=day';
$username = 'username';
$password = 'password';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
$result = curl_exec($ch);
echo $result;
ИЛИ другой способ:
$url = 'https://username:[email protected]/analytics/1.0/pub/shares/url.json?pubid=PUB_ID&period=day';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
$result = curl_exec($ch);
echo $result;
Других решений пока нет …