ton
October 3, 2022

Авторизация через TonKeeper

Краткий обзор, как сделать авторизацию через TonKeeper.

https://github.com/tonkeeper/ton-connect

Генерация ссылки

Ссылка, которая заложена в QR-коде, либо дана напрямую, содержит в себе ссылку на API, к которому должен обратится tonkeeper при открытии.

https://app.tonkeeper.com/ton-login/{url_to_auth_request}

Пример:

https://app.tonkeeper.com/ton-login/getgems.io/tk?id=akW4kIskoXf8_43242

Содержимое API запроса

Пример содержимого getgems.io/tk?id=akW4kIskoXf8_43242

Ссылка должна поддерживать https.

{
  "protocol": "ton-auth",
  "v1": {
    "session": "uD/4pn32ljHzX031232123131W/jAG4Ikxjw=",
    "session_payload": "UjjaXDO4PSW532131321313HLtyGSs1IVAFj4gSfRDhcdRWtFvF7JmbIBCdA4dBDXS3i9CPMewMpvDG7JpBF+IVYDJ0CTtyDi9m14EWdv+N5+yx2aer4uwroGPPPNnX5zpGGmLHzkOdzxHTYuQNcVpiN72DdJv8QPj5rVKmdVaPd5lAviTK/L9Y",
    "image_url": "https://ddejfvww7sqtk.cloudfront.net/images/Getgems.png",
    "items": [
      {
        "type": "ton-ownership",
        "required": true
      }
    ],
    "callback_url": "https://api.getgems.io/tk/callback?authenticationId=akW43232koXf8_A-LpXkcOQ"
  }
}

После того как TonKeeper открыл ссылку, он сразу же заходит на это API.

Callback

После того как пользователь нажал "Подтвердить", с IP пользователя отправляется запрос на callback_url, со всеми данными о пользователе.

Данные необходимо декодировать

 tonconnect.decodeResponse(req.query.tonlogin);

В декодированных данных, будет client_id, уникальный id пользователя и подтверждение владения каким-то кошельком.

Резюме

  1. Создать API которое отдает authRequest по https
  2. Сгенерировать ссылку на tonkeeper, с этим API
  3. Создать Callback API который принимает успешный запрос об авторизации
  4. Сгенерировать QR-код из ссылки на tonkeeper