Ви зараз переглядаєте Як сформувати Server-based Applications токен для Zoho API

Як сформувати Server-based Applications токен для Zoho API

У процесі реалізації проєкту по Zoho CRM часто виникає задача інтегрувати CRM з іншими сервісами клієнта. Найчастіше це сайт, але також можуть бути й інші сервіси — наприклад, LMS-система чи внутрішні інструменти. Частиною роботи CRM-аналітика є написання технічного завдання (ТЗ) для розробників, а також обов’язкове тестування описаних у ТЗ API-запитів. Щоб мати змогу виконати хоча б один запит до Zoho API, спершу потрібно створити Server-based Applications токен — про це й піде мова в цій статті.

Різниця між Self Client і Server-based Applications

В Zoho є 5 різних типів додатків, але за свою роботу я використовував тільки два, тому про них і буде мова

Server-based Applications: Вибір типа додатку

Часто так буває, що приходиш на проєкт і можна побачити використання Self Client додатку, але якщо ви робите інтеграцію з сайтом, або даєте цей token авторизації підряднику, то це хибна практика і ось чому.


Self Client – більш простий з точки зору підключення, не потрібно створювати OAuth авторизацію і слугує більше для швидкого тестування гіпотез. І ще важливо знати, що його можна створити тільки один.


Server-based Applications – використовується повноцінна OAuth-авторизація, можна створювати під різні інтеграції, легко видалити.

А тепер на реальному прикладі. У вас є підрядник по сайту, з якими ви робите інтеграцію. Ви описали ТЗ, згенерували token і віддали йому. Але з часом ви закінчили співпрацю з ним і для безпеки хочете змінити token авторизації. У випадку з Server-based Applications вам достатньо згенерувати новий token і передати новому підряднику. У випадку Self Client вам потрібно зрозуміти, які ще сервіси висять на цій інтеграції і генерація нового token може привести до неочікуваних наслідків.

Я собі запамʼятав, що гарна практика:

  • це створювати Server-based Applications під кожну окрему інтеграцію і називати його відповідно, щоб з часом було зрозуміло, до чого цей token.
  • Уникати назв Сайт 1, Сайт New, Сайт 2.0 і так далі – Назва повинна бути унікальна для одного сервісу. Якщо ви згенерували новий токен, видаліть старий, вам же буде легше в майбутньому

Важливо звертати увагу на домен вашого Zoho EU/COM

В генерації додатку і у використанні API в цілому важливо завжди перевіряти, чи правильний домен ви використовуєте для запитів. В залежності від того, як ви або ваш клієнт реєстрував Zoho, в нього може бути https://crm.zoho.eu/ або https://crm.zoho.com/.

Нижче я буду про це ще згадувати, але важливо завжди памʼятати, тому що у вас просто запити будуть видавати помилку і інколи можна годину провести перш ніж зрозумієш, що ти просто вказав не той домен. Будьте уважні 🙂

Тепер переходимо до покрокової інструкції зі створення і використання Server-based Applications token

Покрокова інструкція із створення Server-based Applications токену

Щоб створити додаток, вам необхідно перейти за посиланням https://api-console.zoho.eu/ і натиснути Get Started і обираємо
Server-based Applications

Server-based Applications: Сторінка реєстрації
Server-based Applications: Вибір типу додатка

Далі необхідно заповнити дані:

Client Name – Назва інтеграції. Як описував вище, краще називати логічно, щоб потім було легко зрозуміти, що це за інтеграція

Homepage URL – Я використовую просто “https://www.google.com/“. Але ви можете додавати сайт клієнта наприклад. Це не принципово.

Authorized Redirect URIs – так само, як і в Homepage

Server-based Applications: Вікно створення нового додатку

Після цього, Zoho попросить вас авторизуватись і після цього ми отримаємо Client ID і Client Secret. Можете їх одразу збрегети, вони нам знадобляться в подальшому для роботи.

Server-based Applications: Приклад Client Secret створеного додатку

Використання Postman для генерації токену

Для своєї зручності я зробив Postman колекцію, тому далі буду показувати на прикладі її використання, але якщо вам дуже не хочеться, то використовувати Postman не обовʼязково.

Ділюсь з вами своєю колекцією за посиланням. Щоб скористатись колекцією, потрібно натиснути в Postman імпорт і вставити туди це посилання.

Server-based Applications: Як імпортувати Postman колекцію
Server-based Applications: Приклад заповнення authorization_code

Створення authorization_code

Першим етапом, нам потрібно сформувати url для отримання authorization_code. У Postman колекції він вже сформований, вам потрібно лише підставити свої дані.

https://accounts.zoho.eu/oauth/v2/auth?response_type=code&client_id=client_id_put_here&scope=ZohoCRM.modules.ALL&redirect_uri=https://www.google.com/&access_type=offline&prompt=consent

response_type = code
client_id = Client ID з вашого додатку Zoho
scope = ZohoCRM.modules.ALL (Це дає доступ до всіх модулів Zoho CRM)
redirect_uri = https://www.google.com/ (Бажано використовувати такий самий, як і при створенні додадтку)
access_type = offline
prompt = consent

Не забуваємо слідкувати за доменом, на якому у вас створений Zoho. Якщо ви використовуєте Postman, то вам достатньо тільки замінити свій Client ID і посилання готове

Server-based Applications: Приклад заповнення authorization_code

Після створення посилання, вам необхідно вставити його в браузері і надати всі дозволи, які просить Zoho. Після надання всіх доступів, у вас відкриється сайт, який ви вказували в redirect url (в мене це google) і в рядку браузера ви зможете забрати ваш згенерований code

Server-based Applications: Приклад authorization_code

ВАЖЛИВО! Цей код має дуже маленький час життя, тому спочатку вам треба підготувати наступний запит, а потім зробити повторно цей запит на authorization_code

Створення refresh_token

Створення refresh_token схоже і ти можеш знову використати Postman, але на цей раз нам вже не потрібно вставляти нічого в браузер і ми будемо робити запит в самому Postman

Server-based Applications: Приклад заповнення refresh_token
https://accounts.zoho.eu/oauth/v2/token?client_id=client_id_put_here&redirect_uri=https://www.google.com/&grant_type=authorization_code&client_secret=client_secret_put_here&code=authorization_code_put_here

Тут працює така ж логіка, як і в першому запиті. Code з попереднього запиту треба вставляти в параметр code

Після того, як ви вставили всі дані і наново згенерували code з першого етапу, потрібно в Postman натиснути Send. У відповідь ви отримаєте refresh_token, які вже нам потрібен для останнього етапу.

Server-based Applications: Приклад створеного refresh_token

Створення access_token

Для всіх подальших запитів нам буде потрібен access_token. Він має 3600 секунд життя і його час від часу доводиться генерувати знову, але refresh_token вже залишається не змінним.

https://accounts.zoho.eu/oauth/v2/token?client_id=client_id_put_here&client_secret=client_secret_put_here&refresh_token=refresh_token_put_here&grant_type=refresh_token

Як ти можеш побачити, логіка така ж сама, потрібно вставити Client ID, Client Secret і refresh_token з попереднього запиту і ми отримаємо у відповідь access_token, який можемо використовувати у запитах API

Server-based Applications: Приклад створеного access_token

Нарешті, ми згенерували все що треба і тепер можемо описувати ТЗ для розробника і тестувати наші запити.

Методи API ти можеш знайти за посиланням https://www.zoho.com/crm/developer/docs/api/, використовуй свіжі версії API

Бонус! Приклад запиту на створення Контакту

Не міг вас відпустити без прикладу реального використання, тому ловіть приклад створення контакту в Zoho CRM.

Знаходимо в API документації метод для створення записів https://www.zoho.com/crm/developer/docs/api/v8/insert-records.html

Server-based Applications: Приклад Zoho API

Беремо url з прикладу і підставляємо необхідний модуль https://www.zohoapis.eu/crm/v8/Contacts і обовʼязково перевіряємо домен, тому що в API документації можуть бути приклади з .com доменом і у вас це просто не спрацює.

Далі створюємо в Postman новий запит і вказуємо всі необхідні дані. Для створення записів потрібно використовувати POST метод і звісно не забуваємо про токен авторизації. Також, в запиті нам необхідно передати тіло запиту, тобто поля для контакту (Імʼя, телефон, пошту і т.д.)

Приклад body

{
    "data": [
        {
            "Company": "Zoho Company",
            "Last_Name": "Analyst",
            "First_Name": "Zoho",
            "Email": "zohoanalyst@test.com",
            "Phone":"+380672343434"
        }
    ],
    "trigger": [
        "approval",
        "workflow",
        "blueprint"
    ]
}
Server-based Applications: Приклад створення контакту в Postman

Не забуваємо про Header

Server-based Applications: Приклад заповненого header в Postman

Якщо все успішно, то отримаємо у відповідь SUCCESS

Server-based Applications: Приклад відповіді створеного контакту в Postman

Підсумки

Описав для вас покрокову інструкцію, навіть трохи намагався пояснити що і до чого. Звісно я не розказав все ідеально, але коли я перший раз зустрівся з задачею, що мені потрібно було зробити ТЗ і протестувати API виклики, то було щось страшне. Тому сподіваюсь, що ти знайшов цю статтю і я трохи полегшив тобі життя.

P.S. Якщо зʼявилось більше запитань, ніж відповідей, пиши мені в телеграм.