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