Зарегистрируйте приложение
Приложение, которое выполняет вход людей через Hivesigner, — это аккаунт Hive. Его имя и есть тот client_id, который вы отправляете. В его профиле хранятся настройки, которые читает Hivesigner: адреса возврата, куда можно отправлять токены, и, для потока с кодом, секрет клиента. Чтобы отправлять операции через API, аккаунт приложения также даёт постинг-полномочия аккаунту @hivesigner. Эта страница проходит по каждому шагу.
Что вам нужно
| Вы хотите | Аккаунт приложения и адреса возврата | Секрет клиента | Разрешение для @hivesigner |
|---|---|---|---|
| Выполнять вход людей и отправлять операции потоком с токеном | Да | Нет | Да |
| Выполнять вход людей и отправлять операции потоком с кодом (токены обновления) | Да | Да | Да |
| Только выполнять вход, токеном, называющим ваше приложение | Да | Нет | Нет |
| Только выполнять вход, с сайта без аккаунта Hive | Нет | Нет | Нет |
| Отправлять ссылки подписи | Нет | Нет | Нет |
Про две последние строки смотрите Вход без доступа к публикации и Ссылки подписи.
Создайте аккаунт приложения
- Создайте аккаунт Hive для своего приложения, например на https://ecency.com/signup. Используйте для приложения отдельный аккаунт, а не свой личный. Его имя и есть ваш
client_id. Люди видят его на экране согласия рядом с «Аккаунт Hive». Аккаунт Hive нельзя переименовать, поэтому выбирайте имя внимательно. - Добавьте аккаунт в 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 в свои постинг-полномочия. Смотрите Цепочка постинг-полномочий.
- Выберите аккаунт своего приложения в Hivesigner.
- Откройте https://hivesigner.com/authorize/hivesigner.
- На странице написано «Авторизовать @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, который отправляет ваше приложение, со своими адресами перенаправления, символ за символом.
Список проверки
- Аккаунт Hive для приложения, добавленный в Hivesigner с его активным ключом.
- На https://hivesigner.com/profile: «Этот аккаунт является приложением» включено, адреса перенаправления перечислены, секрет клиента задан, если вы используете поток с кодом.
- @hivesigner авторизован на https://hivesigner.com/authorize/hivesigner, если вы отправляете операции через API.
- Ссылка входа, которая отправляет ровно один из ваших адресов перенаправления. Смотрите Вход через OAuth2.