Как устроен Hivesigner
Hivesigner позволяет людям пользоваться своим аккаунтом Hive в вашем приложении, не отдавая ему ключи. У него две части: подписывающий инструмент в браузере по адресу https://hivesigner.com и API по адресу https://hivesigner.com/api/. На этой странице объясняется, что делает каждая часть и какими двумя способами приложение их использует.
Подписывающий инструмент в браузере
Подписывающий инструмент в браузере — это сам сайт Hivesigner. Люди добавляют туда свои аккаунты Hive. Их ключи остаются в их собственном браузере: Hivesigner не отправляет ни один ключ ни на какой сервер. Ваше приложение никогда их не видит.
Инструмент подписывает три вида вещей, и каждый раз после того, как человек увидел, что именно он подписывает:
- Токены входа. Ваше приложение отправляет человека в Hivesigner для входа. Hivesigner показывает название вашего приложения и то, что оно запрашивает. Когда человек одобряет, Hivesigner подписывает его ключом короткое утверждение, в котором названы его аккаунт и ваше приложение. Это подписанное утверждение и есть токен, который получает ваше приложение. Смотрите Вход через OAuth2 и Токены.
- Транзакции. Ссылка подписи открывает транзакцию для просмотра. Когда человек одобряет, Hivesigner подписывает её нужным ключом. Затем отправляет её в сеть Hive прямо из браузера, если только ссылка не просит одну лишь подпись. Смотрите Ссылки подписи.
- Сообщения. Ваше приложение может попросить человека подписать текст своим ключом, чтобы подтвердить, что аккаунт принадлежит ему. Смотрите Подпись сообщений.
API
API отправляет в сеть постинг-операции от имени человека, вошедшего в ваше приложение: записи и комментарии, голоса, подписки и другие операции custom_json, получение наград и изменения профиля. Ваше приложение отправляет операции вместе с токеном человека. API проверяет токен, подписывает транзакцию постинг-ключом аккаунта @hivesigner и отправляет её в сеть Hive.
API также возвращает аккаунт вошедшего человека, обменивает коды на токены и перечисляет приложения, которые используют Hivesigner. Смотрите REST API.
Цепочка постинг-полномочий
В Hive один аккаунт может позволить другому действовать со своими постинг-полномочиями. API опирается на два таких разрешения:
@alice (the user)
posting authority includes @myapp (your app account)
posting authority includes @hivesigner (the API)
The API signs with the @hivesigner posting key.
Hive accepts that signature for @alice, through @myapp.
- Человек добавляет аккаунт вашего приложения в свои постинг-полномочия. Экран согласия делает это в первый раз, когда кто-то одобряет доступ к публикации для вашего приложения. Для этого один раз нужен активный ключ человека.
- Аккаунт вашего приложения добавляет @hivesigner в свои постинг-полномочия. Это вы делаете один раз, когда регистрируете приложение.
Перед отправкой API проверяет, что оба разрешения на месте. Он отправляет только те операции, автором которых является человек, названный в токене.
Человек в любой момент может убрать доступ вашего приложения на странице https://hivesigner.com/authorized-apps. После этого API больше не может публиковать за него через ваше приложение.
Два способа интеграции
Вход, а затем отправка через API
1. Your app sends the user to https://hivesigner.com/oauth2/authorize?client_id=...
2. The user reviews the request in Hivesigner and approves it
3. Hivesigner redirects to REDIRECT_URI?access_token=...&expires_in=604800&username=alice
4. Your app POSTs the token and the operations to https://hivesigner.com/api/broadcast
5. The API signs with the @hivesigner posting key and broadcasts to Hive
Человек одобряет один раз. После этого ваше приложение может голосовать, комментировать и публиковать за него, не спрашивая снова, пока токен не истечёт или человек не уберёт доступ. Используйте этот путь для повседневных социальных действий.
Вам нужны аккаунт приложения с зарегистрированными адресами возврата и разрешение для @hivesigner. Смотрите Зарегистрируйте приложение. Если вы хотите только узнать, кто этот человек, смотрите Вход без доступа к публикации.
Ссылки подписи
1. Your app sends the user to https://hivesigner.com/sign/... with the transaction in the link
2. The user reviews the transaction in Hivesigner and approves it
3. Hivesigner signs it with the user's own key in the browser and broadcasts it
4. Hivesigner redirects to your callback, when the link names one
Человек видит каждую транзакцию до подписи. Ссылки подписи охватывают 41 операцию Hive, включая переводы и другие кошельковые действия, для которых нужен активный ключ. API никогда ими не занимается. Для ссылок подписи аккаунт приложения не нужен. Смотрите Ссылки подписи.
Что выбрать
- Частые действия публикации (голоса, комментарии, подписки): выполните вход через OAuth2, а затем используйте API.
- Кошельковые действия или что угодно, где нужен активный ключ: используйте ссылки подписи.
- И то и другое: многие приложения выполняют вход через OAuth2 для социальных возможностей и используют ссылки подписи для переводов.
- Только личность человека: смотрите Вход без доступа к публикации.
Исходный код
Hivesigner имеет открытый исходный код:
- Подписывающий инструмент в браузере: https://github.com/ecency/hivesigner-ui
- API: https://github.com/ecency/hivesigner-api
- SDK для JavaScript (пакет npm
hivesigner): https://github.com/ecency/hivesigner-sdk. Смотрите SDK.