Зарегистрируйте приложение

Приложение, которое выполняет вход людей через Hivesigner, — это аккаунт Hive. Его имя и есть тот client_id, который вы отправляете. В его профиле хранятся настройки, которые читает Hivesigner: адреса возврата, куда можно отправлять токены, и, для потока с кодом, секрет клиента. Чтобы отправлять операции через API, аккаунт приложения также даёт постинг-полномочия аккаунту @hivesigner. Эта страница проходит по каждому шагу.

Что вам нужно

Вы хотите Аккаунт приложения и адреса возврата Секрет клиента Разрешение для @hivesigner
Выполнять вход людей и отправлять операции потоком с токеном Да Нет Да
Выполнять вход людей и отправлять операции потоком с кодом (токены обновления) Да Да Да
Только выполнять вход, токеном, называющим ваше приложение Да Нет Нет
Только выполнять вход, с сайта без аккаунта Hive Нет Нет Нет
Отправлять ссылки подписи Нет Нет Нет

Про две последние строки смотрите Вход без доступа к публикации и Ссылки подписи.

Создайте аккаунт приложения

  1. Создайте аккаунт Hive для своего приложения, например на https://ecency.com/signup. Используйте для приложения отдельный аккаунт, а не свой личный. Его имя и есть ваш client_id. Люди видят его на экране согласия рядом с «Аккаунт Hive». Аккаунт Hive нельзя переименовать, поэтому выбирайте имя внимательно.
  2. Добавьте аккаунт в Hivesigner на странице https://hivesigner.com/import (Добавить аккаунт). Используйте активный ключ или мастер-пароль: разрешение ниже требует активный ключ.

Заполните настройки приложения

Откройте https://hivesigner.com/profile с выбранным аккаунтом приложения и задайте:

  • Этот аккаунт является приложением. Включите это. Так аккаунт помечается как приложение, и именно это API проверяет, прежде чем принять для него код или токен обновления.
  • Адреса перенаправления (URI). Ваши адреса возврата, по одному в строке. Смотрите Адреса возврата.
  • Создатель. Кто сопровождает приложение. Каталог приложений на https://hivesigner.com/apps показывает это.
  • Статус. Продакшен или песочница, для ваших собственных записей. Hivesigner относится к обоим одинаково.
  • Секрет клиента. Нужен только для потока с кодом. Смотрите Секрет клиента.

Заполните также Имя и URL фото профиля. Экран согласия показывает изображение и название вашего приложения. Каталог приложений на https://hivesigner.com/apps показывает название, Описание и Сайт.

Сохранение обновляет профиль аккаунта в блокчейне и требует его постинг-ключ. Hivesigner читает ваши адреса возврата из аккаунта, когда открывается запрос входа, поэтому изменение вступает в силу, как только транзакция попадает в блок.

Примечание: Название, изображение и описание публикует сам аккаунт вашего приложения. Поэтому экран согласия показывает ещё и настоящее имя аккаунта (@myapp) и хост, куда он отправляет человека: именно их на деле используют разрешение и перенаправление.

Адреса возврата

Адрес возврата (это redirect_uri в запросе входа) — место, куда Hivesigner возвращает человека с токеном или кодом. Hivesigner отправляет его только на адрес, указанный в аккаунте вашего приложения.

Правила

  • Точное совпадение. redirect_uri в запросе должен быть одним из ваших адресов перенаправления, символ в символ: схема, хост, порт, путь и строка запроса.
  • Только https. Адрес возврата должен использовать https://. Обычный http:// принимается лишь на петлевом адресе: localhost, 127.0.0.1 или [::1].
  • Порты петлевого адреса могут меняться. Петлевой адрес возврата, зарегистрированный с обычным http, подходит любому петлевому хосту и порту с тем же путём, строкой запроса, фрагментом и сведениями о пользователе. Петлевой адрес, зарегистрированный с https://, требует точного совпадения.
  • Никаких своих схем. Адрес вида myapp://callback отклоняется. Смотрите Мобильные и настольные приложения.
  • Никаких фрагментов. Не добавляйте #fragment к адресу возврата.

Страница профиля отказывается сохранять адрес возврата, который никогда не сможет работать, и сообщает «Непригодный адрес обратного вызова (нужен https или http на localhost)».

Примеры

При таких зарегистрированных адресах перенаправления:

https://myapp.example/auth/callback
http://localhost:3000/auth
redirect_uri в запросе Результат
https://myapp.example/auth/callback Принят: точное совпадение
https://myapp.example/auth/callback/ Отклонён: лишний /
https://myapp.example/auth/callback?next=home Отклонён: строка запроса другая
https://www.myapp.example/auth/callback Отклонён: другой хост
http://myapp.example/auth/callback Отклонён: обычный http вне петлевого адреса
http://localhost:3000/auth Принят: точное совпадение
http://127.0.0.1:51234/auth Принят: петлевой адрес, тот же путь, другой порт
http://[::1]:3000/auth Принят: петлевой адрес, тот же путь
http://127.0.0.1:3000/other Отклонён: другой путь
https://localhost:3000/auth Отклонён: https не совпадает с регистрацией по обычному http
myapp://auth Отклонён: своя схема

Чтобы принимать строку запроса на своём адресе возврата, зарегистрируйте адрес именно с этой строкой запроса. Hivesigner сохраняет собственную строку запроса вашего адреса и добавляет свои параметры после неё.

Мобильные и настольные приложения

Hivesigner кладёт токен в адрес возврата. Своя схема вроде myapp:// не привязана к одному приложению: другое приложение на том же устройстве может заявить на неё права и получить токен. Поэтому Hivesigner отклоняет свои схемы и отправляет токены только на адрес https или на петлевой адрес собственного устройства человека.

Нативное приложение использует вместо этого один из путей:

  • Ссылка https, которая ему принадлежит. Зарегистрируйте адрес возврата в своём домене, который операционная система открывает в вашем приложении (App Links в Android или Universal Links в iOS).
  • Петлевой адрес возврата. Приложение слушает перенаправление на 127.0.0.1. Зарегистрируйте http://127.0.0.1/auth (или localhost) и используйте во время работы любой свободный порт: порт совпадать не обязан.

Секрет клиента

Секрет клиента подтверждает, что обмен кода идёт с вашего сервера. Для потока с кодом он обязателен: ваш сервер отправляет его с каждым кодом или токеном обновления на /api/oauth2/token. Поток с токеном его не использует.

  • Создайте длинное случайное значение, например командой openssl rand -hex 32.
  • Задайте его на странице профиля. Hivesigner хранит только его хеш sha256, в профиле аккаунта вашего приложения. Если оставить поле пустым, нынешний секрет сохранится.
  • Держите его на своём сервере. Никогда не помещайте его на веб-страницу, в мобильное приложение или в адрес.
  • Чтобы сменить его, задайте новый и в тот же момент обновите свой сервер.

Дайте @hivesigner постинг-полномочия

API отправляет операции постинг-ключом аккаунта @hivesigner. Hive принимает эту подпись для ваших пользователей только тогда, когда аккаунт вашего приложения добавил @hivesigner в свои постинг-полномочия. Смотрите Цепочка постинг-полномочий.

  1. Выберите аккаунт своего приложения в Hivesigner.
  2. Откройте https://hivesigner.com/authorize/hivesigner.
  3. На странице написано «Авторизовать @hivesigner» и «@hivesigner сможет публиковать, комментировать, голосовать и подписываться от имени @myapp.». Выберите Авторизовать. Для этого нужен активный ключ аккаунта приложения.

Это делается один раз. Без этого любая отправка завершается ошибкой unauthorized_client и сообщением «Broadcaster account doesn't have permission to broadcast for @myapp». Приложению, которое только выполняет вход, это не нужно.

Это разрешение также позволяет @hivesigner публиковать от имени самого аккаунта вашего приложения — ещё одна причина держать аккаунт приложения только для приложения.

Приложения, которые с этим разрешением отправляют операции через Hivesigner, могут появиться в каталоге приложений на https://hivesigner.com/apps, упорядоченные по числу пользователей.

Что видят люди, когда что-то не так

Hivesigner отклоняет запрос, на который не может ответить безопасно. Он показывает сообщение и кнопку Сообщить о проблеме. Такой запрос одобрить нельзя. На ваш адрес возврата ничего не отправляется.

Проблема Что читает человек
redirect_uri не входит в ваши адреса перенаправления «Адрес перенаправления этого приложения не зарегистрирован. Вход заблокирован ради вашей безопасности.»
client_id не является аккаунтом Hive «@myapp не является аккаунтом Hive, поэтому такого приложения для авторизации не существует. Вернитесь на сайт и попробуйте снова.»
Аккаунт не помечен как приложение «@myapp не настроен как приложение, поэтому не может выполнить вход. Вернитесь на сайт и попробуйте снова.» Включите Этот аккаунт является приложением, как описано выше.
В запросе нет redirect_uri «Этот запрос авторизации неполный: в нём не указано приложение или адрес перенаправления. Вернитесь в приложение и попробуйте снова.»

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

Список проверки

  1. Аккаунт Hive для приложения, добавленный в Hivesigner с его активным ключом.
  2. На https://hivesigner.com/profile: «Этот аккаунт является приложением» включено, адреса перенаправления перечислены, секрет клиента задан, если вы используете поток с кодом.
  3. @hivesigner авторизован на https://hivesigner.com/authorize/hivesigner, если вы отправляете операции через API.
  4. Ссылка входа, которая отправляет ровно один из ваших адресов перенаправления. Смотрите Вход через OAuth2.