Добавляем карточки в trello на php

21.05.2018

Бывают задачи которые нужно повторять каждый день, поэтому логично добавлять их автоматически.

Решил воспользоваться готовой библиотекой, а не писать руками с нуля, пора к такому привыкать :-)

  • Бегло просмотрел https://trello.readme.io/docs/api-introduction

  • Получил ключ: https://trello.com/app-key

  • Потом авторизовал приложение и получил токен

    Ссылка Generate a Token

  • Посмотрев несколько библиотек выбрал trello/trello

  • Код:

    index.php (Download)

     <?
      error_reporting(E_ALL);
      ini_set('display_errors', 'On');
    
    
      require_once('vendor/autoload.php');
      
      $api_key = 'XXX48fc7830963635215f540ed2a0XXX';
      $returned_token = 'XXXbc03c957c309450ce780756496a17fc6525155e1c24bffc10044c718b3XXX';
      $client = new \Trello\Client($api_key);
      
      $client->setAccessToken($returned_token);
    
      $board_id = 'EWFeFLJr';
      $board = $client->getBoard($board_id);
      
      $card_id = '1';
      $card = $board->getCard($card_id);
      echo $card->name . '<br />';
      
      $card->name = $card->name . '-1';
      $card->save();
      
      $list_id = 'XXX12cd6287d1cf84934eXXX';
      $card = new \Trello\Model\Card($client);
      $card->name = 'some card name';
      $card->desc = 'some card desc';
      $card->idList = $list_id;
      $card->save();
    
      echo '<pre>';
      print_r($card);
      echo '</pre>';

  • $api_key и $returned_token - получил из первых пунктов этой заметки.

  • $board_id - получил из ссылки в браузере:

    pic1

  • $card_id - так, тут немного сложнее, получил из части ссылки на карточку:

    pic1

  • $list_id - открываем инструмент отладки браузера, переключаемся я на вкладку "сеть", добавляем карточку, фильтруем xhr запросы и в параметрах смотрим idList

    pic1

    Старый вариант, когда не смог вытащить его руками, использовал код:

     
      ...
      $card_id = '1';
      $card = $board->getCard($card_id);
      echo '<pre>';
      print_r($card);
      echo '</pre>';
    

    pic1

    - как видно на скиншоте, там и у Доски и у Листа, есть более нормальные ID

Ошибки:

При использовании пакета из консоли, проблем не было, но из под веб сервера получил:
curl_setopt_array(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir
Дело в том, что использовать CURLOPT_FOLLOWLOCATION не безопасно, т.к. редирект может быть, например, на file:///etc/passwd.

В интернете много предложений отключить safe_mode и open_base_dir
Меня это не устроило, поэтому я просто отключил эту опцию при вызове API. В фале /vendor/trello/trello/Trello/Client.php закомментировал CURLOPT_FOLLOWLOCATION => true


Категории: PHP, Сторонние сервисы
Пометки: trello api php
Яндекс.Метрика