- Π‘Π°ΠΉΡ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΡΡΠ»ΠΊΡ
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ
- Oberton ΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΡ
- ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π€ΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° URL-encoded format https://www.w3schools.com/tags/ref_urlencode.ASP, Π½Π° Π½Π°ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ»ΡΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° callbackUrl
https://callback.url => https%3A%2F%2Fcallback.url
ΠΈ ΠΎΡΡΠΏΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· Π΄ΠΈΠΏΠ»ΠΈΠ½ΠΊ https://oberton.io/deeplink Ρ ΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΠΌΠ΅Ρ Π½ΠΈΠΆΠ΅:
type
ΠΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ auth
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΏΠΎ Π½Π΅ΠΌΡ oberton ΠΏΠΎΠΉΠΌΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠ΅Π»ΡΠΊ.
id
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ string
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π±ΡΠΊΠ΅Π½Π΄ ΡΠ°ΠΉΡΠ° Π½Π°ΠΉΠ΄ΡΡ Ρ ΡΠ΅Π±Ρ otp
otp
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ string
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠΎΠ³ΠΎ QR ΠΊΠΎΠ΄Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ²ΡΠ·Π°ΡΡ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
callbackUrl
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ string
url Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΡΠ΅Π»ΡΠΊ ΠΎΡΠΏΡΠ°Π²ΠΈΡ POST Π·Π°ΠΏΡΠΎΡ, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΠΈΠΉ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΊΠΎΡΠ΅Π»ΡΠΊΠΎΠΌ.
warningText
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ string
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ²ΠΈΠ΄ΠΈΡ ΠΏΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΊΠΎΡΠ΅Π»ΡΠΊΠ΅ Π²ΠΈΠ΄ΠΈΡ Π·Π°ΠΏΡΠΎΡ Π½Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° warningText
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ
Oberton Π±Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠ΅Π»ΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ otp. ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΠΊΠ»ΡΡΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΎΠ»ΡΡΠΈΠ²ΡΠΈΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π° callbackUrl ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ
-
Π‘Π°ΠΉΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ POST Π·Π°ΠΏΡΠΎΡ ΠΎΡ Oberton
-
ΠΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ id ΡΠ°ΠΉΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡ otp Ρ ΡΠ΅Π±Ρ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΠ
-
ΠΠ΅ΡΡΠΌ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ° addr Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠ΅Π»ΡΠΊΠ° ΠΈ pk ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΠ§ ΡΡΠΎ Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΡΠ΅Π»ΡΠΊΠ° Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ.
-
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ.
const { hash } = await this.crypto.sha256({
data: Buffer.from(`${otp}${callbackUrl}${address}`, 'utf-8').toString(
'base64'
),
});
const { succeeded } = await this.client.crypto.nacl_sign_detached_verify({
unsigned: Buffer.from(hash, 'hex').toString('base64'),
signature: Buffer.from(signature.replace(/ /g, '+'), 'base64').toString('hex'),
});
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.