mautic - 我想通过api在mautic中添加联系人

时间:2018-06-10 07:07:29

标签: api mautic

我想通过API在mautic中添加联系人。下面我有代码,但它没有在mautic中添加联系人。

我在localhost中安装了mautic。在mautic文档中研究了API表单并尝试至少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";

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

根据我的经验,有时在设置中激活API后,API只会在清除缓存后才能开始工作。

  1. 确保已在设置中激活了API

  2. 清除缓存:

    cd /path/to/mautic
    rm -rf app/cache/*

  3. 然后再试一次

  4. 如果这不起作用,请尝试使用BasicAuth示例(您必须在设置中再次启用它,然后添加新用户以设置凭据)

我怀疑OAuth流可能会受到本地设置/ SSL配置的干扰。

答案 1 :(得分:2)

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目录中的日志。

答案 2 :(得分:0)

这些步骤可能有用:

  • 确保已启用API(是的,我知道它可能很明显,但仍然可以);
  • 检查日志;
  • 检查响应正文;
  • 尝试通过邮递员将其作为简单json发送

可能是以下问题之一:

  • 缓存;

  • 您没有发送key:value;必填的自定义字段;

  • 您对身份验证有误;

    祝你好运:)