biblio-docs/user-key.md
2022-04-04 18:34:22 +03:00

58 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Как сгенерировать user_key?
## Формирование user_key (примеры на php)
Ключ пользователя формируется из массива параметров, которые позволяют однозначно идентифицировать пользователя внутри системы Biblio.
**Массив имеет следующий вид:**
```
$ident_array = [
'type' => 'email',
'ident' => 'username@mail.ru'
];
```
**В качестве type в ident массиве могут выступать следующие значения:**
- **email** электронная почта (предпочтительно)
- **phone** номер телефона (в международном формате, без + в начале номера)
- **google_id** идентификатор пользователя у google
- **vk_id** идентификатор пользователя в Вконтакте
- **apple_id** идентификатор пользователя в apple id (не email apple id, а именно идентификатор)
- **tg_id** идентификатор пользователя в Telegram
- **fb_id** идентификатор пользователя в Facebook
**Необходимо указать свой ключ реферала:**
```
$referal_key = 'YOUR_REFERAL_KEY';
```
Далее массив преобразовывается в base64 строку, которая используется в качестве user_key в виджете.
**Алгоритм преобразования следующий:**
```
$source_string = json_encode($ident_array);
$ivlen = openssl_cipher_iv_length($cipher = 'AES-256-CBC');
$iv = mb_substr($referal_key, 0, $ivlen);
$key = mb_substr($referal_key, 10, 35);
$raw = openssl_encrypt($source_string, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha25', $raw, $key, true);
$user_key = base64_encode($hmac.$raw);
```
### Контрольные значения для проверки алгоритма
Вводные данные:
```
$ident_array = [
'type' => 'email',
'ident' => 'username@mail.ru'
];
$referal_key = 'YOUR_REFERAL_KEY';
```
Итоговый ключ:
```
o91Gup4bGZ11hjsBbIvimOiv5Lg+5kcgfsSoQ9YkPcPB5f/mkYJIo7Tp0TI6piG/lO3aQSeszOzgG05dl8PH3Cyc2J63vJ6slFL0LFV6jhs=
```