> For the complete documentation index, see [llms.txt](https://manual.boxexchanger.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.boxexchanger.net/sistemy-avtorizacii/avtorizaciya-apple.md).

# Авторизация Apple

### Аккаунт разработчика Apple

1. Войдите в ваш аккаунт разработчика Apple: <https://developer.apple.com/account>.

{% hint style="info" %}
Обратите внимание, для получения ключей для настройки авторизации через Apple, у вас должен быть аккаунт разработчика Apple с доступами к разделу [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/).

Подробнее о создании аккаунта разработчика и добавления вашей компании в программу "[Apple Developer Program](https://developer.apple.com/programs/)" вы можете узнать по ссылке: <https://developer.apple.com/programs/enroll/>
{% endhint %}

### Создание App ID

1. В блоке "**Program resources**" в разделе "**Certificates, Identifiers & Profiles**" нажмите на "[**Identifiers**](#user-content-fn-1)[^1]".
2. На странице "**Identifiers**" [**нажмите**](#user-content-fn-2)[^2] на значок "**+**".&#x20;
3. На следующей странице "**Register a new identifier**" выберите "**App IDs**" -> нажмите "[**Continue**](#user-content-fn-3)[^3]".
4. На следующем шаге "**Select a type**" выберите "**App**" -> нажмите "[**Continue**](#user-content-fn-4)[^4]".
5. \
   а) На следующем шаге "**Register an App ID**" в поле "**Description**" введите название вашего проекта -> для поля "**Bundle ID**" выберите "**Explicit**" -> в поле "**Bundle ID**" введите reverse domain name вашего ОП в формате <mark style="color:orange;">**`domainZone.domain.oauth`**</mark> (пример <mark style="color:green;">**`net.boxexchanger.oauth`**</mark>). \
   \&#xNAN;***В случае, если ваш ОП расположен на субдомене, то необходимо указывать в формате*** <mark style="color:orange;">**`domainZone.subDomain.domain.oauth`**</mark>. \
   Пример заполненных полей "**Description"** и "**Bundle ID**" на [**скриншоте**](#user-content-fn-5)[^5]. \
   б) Ниже на странице в разделе "**Capabilities**" поставьте галочку напротив пункта "**Sign in with Apple**" -> нажмите "[**Continue**](#user-content-fn-6)[^6]" -> нажмите "[**Register**](#user-content-fn-7)[^7]".
6. App ID успешно создан.&#x20;

### Создание Service ID

1. На странице "**Certificates, Identifiers & Profiles**" в разделе "**Identifiers**" [**нажмите**](#user-content-fn-2)[^2] на значок "**+**".&#x20;
2. На следующей странице "**Register a new identifier**" выберите "**Services IDs**" -> нажмите "[**Continue**](#user-content-fn-8)[^8]".
3. На следующем шаге "**Register a Services ID**" в поле "**Description**" введите название вашего проекта -> в поле "**Identifier**" введите reverse domain name вашего ОП в формате <mark style="color:orange;">**`domainZone.domain.service`**</mark> (пример <mark style="color:green;">**`net.boxexchanger.service`**</mark>). \
   \&#xNAN;***В случае, если ваш ОП расположен на субдомене, то необходимо указывать в формате*** <mark style="color:orange;">**`domainZone.subDomain.domain.service`**</mark>. \
   Пример заполненных полей "**Description"** и "**Identifier**" на [**скриншоте**](#user-content-fn-9)[^9] **->** нажмите "**Continue**" -> нажмите "[**Register**](#user-content-fn-10)[^10]".
4. После успешного создания "**Service ID**", на странице "**Certificates, Identifiers & Profiles**" в разделе "**Identifiers**" справа сверху в фильтре выберите "[**Services IDs**](#user-content-fn-11)[^11]" -> нажмите на имя созданного ранее "**Service ID"**.
5. На странице "**Edit your Services ID Configuration**" поставьте галочку напротив пункта "**Sign in with Apple**" -> нажмите "[**Configure**](#user-content-fn-12)[^12]".&#x20;
6. \
   a) В появившемся окне для раздела "**Web Authentication Configuration**" по умолчанию будет выбран, ранее созданный "**App ID**". \
   б) В разделе "**Register Website URLs**" - подразделе "**Domains and Subdomains**" укажите домен вашего ОП в формате:\
   \- Если ваш домен с www:  <mark style="color:orange;">**`www.domain.domainZone`**</mark>\
   \&#xNAN;***В случае, если ваш ОП расположен на субдомене, то необходимо указывать в формате*** <mark style="color:orange;">**`www.subDomain.domain.domainZone`**</mark>\
   \
   \- Если ваш домен без www:<mark style="color:orange;">**`domain.domainZone`**</mark> \
   \&#xNAN;***В случае, если ваш ОП расположен на субдомене, то необходимо указывать в формате*** <mark style="color:orange;">**`subDomain.domain.domainZone`**</mark>\
   \
   в) В подразделе "**Return URLs**" укажите callback URL в формате <mark style="color:orange;">**`https://www.domain.domainZone/service/auth/apple/callback`**</mark>\
   **Пример**: <mark style="color:green;">**`https://www.boxexchanger.net/service/auth/apple/callback`**</mark>\
   \
   **Пример заполненных полей на** [**скриншоте**](#user-content-fn-13)[^13]. \
   г) После заполнения полей нажмите "**Next**".\
   д) В этом же окне на следующем шаге "**Confirm your web authentication configuration**" нажмите "[**Done**](#user-content-fn-14)[^14]".
7. После закрытия окна из шага 6, на странице "**Edit your Services ID Configuration**" справа сверху нажмите "[**Continue**](#user-content-fn-15)[^15]" -> далее нажмите "[**Save**](#user-content-fn-16)[^16]".
8. Service ID успешно создан и настроен.&#x20;

### Создание ключей авторизации

1. На странице "**Certificates, Identifiers & Profiles**" в разделе "**Keys**" [**нажмите**](#user-content-fn-17)[^17] на значок "**+**".
2. На следующей странице "**Register a New Key**" в поле "**Key Name"** укажите название ключа, к примеру, <mark style="color:green;">**`oauthKey`**</mark> -> установите галочку напротив пункта "**Sign in with Apple**" -> нажмите "[**Configure**](#user-content-fn-18)[^18]" для данного пункта.&#x20;
3. На следующем шаге "**Configure Key**" для поля "**Primary App ID**" выберите ранее созданный "**App ID**" -> нажмите "[**Save**](#user-content-fn-19)[^19]".
4. На странице "**Register a New Key**" справа сверху нажмите "[**Continue**](#user-content-fn-20)[^20]" -> нажмите "[**Register**](#user-content-fn-21)[^21]".&#x20;
5. На следующем шаге "**Download Your Key**" скопируйте в надежное место значение поля "**Key ID**" -> нажмите на кнопку "**Download**" чтобы скачать файл с секретным ключом -> нажмите "**Done**".
6. В правом верхнем углу страницы скопируйте в надежное место значение "**Team ID**" как указано на [**скриншоте**](#user-content-fn-22)[^22].&#x20;
7. На странице "**Certificates, Identifiers & Profiles**" в разделе "**Identifiers**" справа сверху в фильтре выберите "**Services IDs**" -> скопируйте в надежное место значение "**IDENTIFIER**" для созданного ранее "**Service ID**" как указано на [**скриншоте**](#user-content-fn-23)[^23].&#x20;

### Конфигурация в админ панели

1. Перейдите в админ панель скрипта BoxExchanger -> страница "**Система авторизации**" -> найдите метод авторизации "**Apple**".
2. В поле "[**keyID**](#user-content-fn-24)[^24]" укажите скопированное значение "**Key ID**" из пункта 5 предыдущего раздела инструкции.&#x20;
3. В поле "[**teamID**](#user-content-fn-25)[^25]" укажите скопированное значение "**Team ID**" из пункта 6 предыдущего раздела инструкции.&#x20;
4. В поле "[**clientID**](#user-content-fn-26)[^26]" укажите скопированное значение "**IDENTIFIER**" из пункта 7 предыдущего раздела инструкции.&#x20;
5. В поле "[**clientSecret**](#user-content-fn-27)[^27]" укажите секретный ключ из скачанного файла из пункта 5 предыдущего раздела инструкции.  *Вы можете открыть скачанный файл с секретным ключом через удобный для вас текстовый редактор.*&#x20;
6. Переведите ползунок напротив метода авторизации "**Apple**" в активное положение как показано на [**скриншоте**](#user-content-fn-28)[^28].&#x20;
7. В админ панели перейдите на страницу "**Настройки сайта**" -> раздел "[**Server**](#user-content-fn-29)[^29]" -> перезагрузите процессы "**api-http**" по алгоритму ниже.&#x20;

<details>

<summary>Алгоритм действий для перезагрузки процесса</summary>

1. Нажмите "**Reboot**" напротив необходимого процесса.
2. Согласитесь на перезагрузку.
3. Подождите 10 секунд.
4. Перезагрузите страницу и проверьте, что время обновления "Несколько секунд назад".

</details>

8. В итоге в [**окне входа**](#user-content-fn-30)[^30] и [**регистрации**](#user-content-fn-31)[^31] для клиента будет доступен метод авторизации через **Apple**.&#x20;

[^1]: ![](/files/6yWHO6kNGuE79nzzF4HT)

[^2]: ![](/files/JCPJsKoNt06aRC3fYWpF)

[^3]: ![](/files/Zx064YfDzEs5QGZUNAR3)

[^4]: ![](/files/nTp2SGkGn3UmAR9aRcH8)

[^5]: ![](/files/V0J32UGUZwTRcXdUmrqp)

[^6]: ![](/files/aueOxjUw5aRDZGXSdrx1)

[^7]: ![](/files/YOJI6CyNHJIsTL7nCyAc)

[^8]: ![](/files/B9pe3gV0qVLrTeiiEMcg)

[^9]: ![](/files/VLO5xxyyVL2Op4deWzYo)

[^10]: ![](/files/jVOqDybUecezg5z1dSWt)

[^11]: ![](/files/yUr2wqtO5bX1i96cSgg2)

[^12]: ![](/files/ODmjm53GdoA23vsTvOXQ)

[^13]: ![](/files/NpMpAgGvM3Slozks22W7)

[^14]: ![](/files/HaHfZejsa3E8NY2efy3B)

[^15]: ![](/files/vvp1vLUkESMr6Xm7rYv1)

[^16]: ![](/files/DmCTX89mZz8tlaIxszw8)

[^17]: ![](/files/Z2zDdC6VeXEgFZYY66sB)

[^18]: ![](/files/7mf18HrNvEo1foStvxhs)

[^19]: ![](/files/3lIbypQ8nISVyBDAAOZ7)

[^20]: ![](/files/wfFgDxZKrpSLkUjdbRIw)

[^21]: ![](/files/2C3qsTQsidtEkeFdw6Gx)

[^22]: ![](/files/U2PBFddxA1d2cqh9pAx1)

[^23]: ![](/files/sf5IfOqU3XrAYaNFXbTm)

[^24]: ![](/files/6zxf1Fc8wPJHxHlj3hGw)

[^25]: ![](/files/6OUo8zTixhuwGbhkeoye)

[^26]: ![](/files/IkE6sZq76jAOtYY9xfrM)

[^27]: ![](/files/8jqTthJlCpv12XhdyUrR)

[^28]: ![](/files/1mNrwSLG1uZANB16YbbZ)

[^29]: ![](/files/uVVnPOaM0wsLmRgALC2V)

[^30]: ![](/files/fJMIzyBHerlF9jmUGj7a)

[^31]: ![](/files/E0dXfg9HN0hy10CDzdVY)
