58 lines
2.4 KiB
Markdown
58 lines
2.4 KiB
Markdown
|
# Как сгенерировать 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=
|
|||
|
```
|
|||
|
|