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

2.4 KiB
Raw Blame History

Как сгенерировать 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=