FreeAgent oAuth2 не может обновить контакт, используя оболочку Light PHP - PullRequest
0 голосов
/ 02 ноября 2019

У меня проблемы с созданием нового контакта в FreeAgent.

Я использую оболочку Light PHP для протокола OAuth 2.0 и мне удалось успешно настроить oAuth2. Я могу подключиться к FreeAgent и успешно получить список клиентов. Все идет нормально. Проблема в том, что я отправляю данные обратно другим способом, то есть создаю новый контакт в FreeAgent.

Вот код, который я пробовал:

require_once($_SERVER['DOCUMENT_ROOT'].'/OAuth2/Client.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/OAuth2/GrantType/IGrantType.php');

$client = new OAuth2\Client($clientid, $secret);

$params = json_encode(array('contact' => array('first-name' => $firstname_unencrypted, 'last-name' => $surname_unencrypted)));

$response = $client->fetch("/contacts", $params, "POST", array('User-Agent' => 'MyApp', 'Accept' => 'application/json', 'Content-type' => 'application/json'));

var_dump($response);

Возвращаемая переменная var_dump показывает:

array(3) {
  ["result"]=>
  bool(false)
  ["code"]=>
  int(0)
  ["content_type"]=>
  bool(false)
}

Я почти уверен, что делаю что-то глупое. Я попытался отправить в XML вместо JSON. Я попытался использовать только один массив параметров, а не массив в массиве, который я получил в примере. Я иду кругами!

Если бы кто-нибудь мог слегка подтолкнуть меня в правильном направлении, я был бы вечно благодарен!

1 Ответ

0 голосов
/ 02 ноября 2019

Пример кода, который работал:

            $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
                     <contact>
                      <first-name>$firstname_unencrypted</first-name>
                      <last-name>$surname_unencrypted</last-name>
                    </contact>";

            if ($sandbox || $demo)
                $ch = curl_init('https://api.sandbox.freeagent.com/v2/contacts');
            else
                $ch = curl_init('https://api.freeagent.com/v2/contacts');
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Authorization: Bearer '.$freeagentaccesstoken,
                'Content-Type: application/xml',
                'Accept: application/json',
                'User-Agent: MyApp',
                'Content-Length: ' . strlen($xml))
            );
            curl_setopt($ch, CURLOPT_TIMEOUT, 5);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

            //execute post
            $result=json_decode(curl_exec($ch), true);
            $freeagenturl=$result['contact']['url'];
            curl_close($ch);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...