mautic - хочу добавить контакт в mautic через api
Я хочу добавить контакт в mautic через API. Ниже у меня есть код, но он не добавляет контакт в mautic.
Я установил mautic в localhost. Изучил форму API в mautic документации и пытался сделать это как минимум 2 дня, но я не получаю никаких результатов.
// Bootup the Composer autoloader
include __DIR__ . '/vendor/autoload.php';
use Mautic\Auth\ApiAuth;
session_start();
$publicKey = '';
$secretKey = '';
$callback = '';
// ApiAuth->newAuth() will accept an array of Auth settings
$settings = array(
'baseUrl' => 'http://localhost/mautic', // Base URL of the Mautic instance
'version' => 'OAuth2', // Version of the OAuth can be OAuth2 or OAuth1a. OAuth2 is the default value.
'clientKey' => '1_1w6nrty8k9og0kow48w8w4kww8wco0wcgswoow80ogkoo0gsks', // Client/Consumer key from Mautic
'clientSecret' => 'id6dow060fswcswgsgswgo4c88cw0kck4k4cc0wkg4gows08c', // Client/Consumer secret key from Mautic
'callback' => 'http://localhost/mtest/process.php' // Redirect URI/Callback URI for this script
);
/*
// If you already have the access token, et al, pass them in as well to prevent the need for reauthorization
$settings['accessToken'] = $accessToken;
$settings['accessTokenSecret'] = $accessTokenSecret; //for OAuth1.0a
$settings['accessTokenExpires'] = $accessTokenExpires; //UNIX timestamp
$settings['refreshToken'] = $refreshToken;
*/
// Initiate the auth object
$initAuth = new ApiAuth();
$auth = $initAuth->newAuth($settings);
/*
if( $auth->getAccessTokenData() != null ) {
$accessTokenData = $auth->getAccessTokenData();
$settings['accessToken'] = $accessTokenData['access_token'];
$settings['accessTokenSecret'] = 'id6dow060fswcswgsgswgo4c88cw0kck4k4cc0wkg4gows08c'; //for OAuth1.0a
$settings['accessTokenExpires'] = $accessTokenData['expires']; //UNIX timestamp
$settings['refreshToken'] = $accessTokenData['refresh_token'];
}*/
// Initiate process for obtaining an access token; this will redirect the user to the $authorizationUrl and/or
// set the access_tokens when the user is redirected back after granting authorization
// If the access token is expired, and a refresh token is set above, then a new access token will be requested
try {
if ($auth->validateAccessToken()) {
// Obtain the access token returned; call accessTokenUpdated() to catch if the token was updated via a
// refresh token
// $accessTokenData will have the following keys:
// For OAuth1.0a: access_token, access_token_secret, expires
// For OAuth2: access_token, expires, token_type, refresh_token
if ($auth->accessTokenUpdated()) {
$accessTokenData = $auth->getAccessTokenData();
echo "<pre>";
print_r($accessTokenData);
echo "</pre>";
//store access token data however you want
}
}
} catch (Exception $e) {
// Do Error handling
}
use Mautic\MauticApi;
//use Mautic\Auth\ApiAuth;
// ...
$initAuth = new ApiAuth();
$auth = $initAuth->newAuth($settings);
$apiUrl = "http://localhost/mautic/api";
$api = new MauticApi();
$contactApi = $api->newApi("contacts", $auth, $apiUrl);
$data = array(
'firstname' => 'Jim',
'lastname' => 'Contact',
'email' => 'jim@his-site.com',
'ipAddress' => $_SERVER['REMOTE_ADDR']
);
$contact = $contactApi->create($data);
echo "<br/>contact created";
Любая помощь будет оценена.
1 ответ
use Curl\Curl;
$curl = new Curl();
$un = 'mayank';
$pw = 'mayank';
$hash = base64_encode($un.':'.$pw);
$curl->setHeader('Authorization','Basic '.$hash);
$res = $curl->post(
'http://mautic.local/api/contacts/new',
[
'firstname'=>'fn',
'lastname'=>'ln',
'email'=>'t1@test.com'
]
);
var_dump($res);
Я пробовал это очень просто, и у меня это сработало. Попробуйте очистить кеш и включить ведение журнала. Если вы не сообщите нам об ошибке, вам будет сложно указать правильное направление. Пожалуйста, проверьте журналы в каталоге app / logs, а также в каталоге / var / logs / apache2.
По моему опыту иногда после активации API в настройках API начинает работать только после очистки кеша.
Убедитесь, что вы активировали API в настройках
Очистить кеш:
cd /path/to/mautic
rm -rf app/cache/*
Тогда попробуйте еще раз
Если это не сработало, попробуйте использовать пример BasicAuth (необходимо снова включить эти настройки и добавить нового пользователя для установки учетных данных).
Я подозреваю, что поток OAuth может быть нарушен локальными настройками / конфигурацией SSL.
Эти шаги могут быть полезны:
- убедитесь, что API включен (да, я знаю, это может быть очевидно, но все же);
- проверить журналы;
- проверить тело ответа;
- попробуйте отправить его как простой json через Postman
это может быть одна из следующих проблем:
Кэш;
Вы не отправляете ключ: значение; обязательного настраиваемого поля;
вы ошиблись с аутентификацией;
Удачи:)