• Друзья! Этот ресурс создан в далеком 2019 году ;) для себя, чтобы структурировать и всегда иметь под рукой нужные решения, примеры, ссылки, описания и т.д., а при случае все это обсудить с коллегами. Если вам что-то подобное может быть интересно – присоединяйтесь! Добавляйте свои заметки! Если нужны дополнительные разделы – сообщайте!

РЕШЕНО Как изменить публичное имя в Яндекс (в Яндекс ID)

AndreyG

Активист
Поменять публичное имя в Яндексе почему-то нельзя ни через интерфейс кабинета пользователя ни через кабинет организации, а только через API. Ну и ладно, через API так через API, и это займет у вас пять минут, поверьте (программистом быть не нужно ;)).

1. Заходим в Яндекс под логином администратора домена (администратор организации).

2. Создаем приложение, перейдя по ссылке: https://oauth.yandex.ru/client/new/ (именно эта ссылка!)
Заполняем:
- название: произвольное;
- платформа: веб-сервисы;
- Redirect URI: https://oauth.yandex.ru/verification_code
- доступ к данным: directory:write_organization
- почта для связи: укажите любую вашу
Всё, жмем "Создать приложение"

3. Откроется страница с перечнем приложений (ну у вас оно единственное скорее всего). Заходим в только что созданное приложение. В правом верхнем углу жмем на карандаш (редактирование приложения).
В "Доступ к данным" в "Название доступа" последовательно добавляем еще три пункта (копируйте и вставляйте по одному, и выбирайте из выпадающего из поля списка):
directory:write_users
directory:read_users
directory:read_organization


Всё, жмем Сохранить.

Теперь обратите внимание на поле ClientID. Это значение нам понадобится сейчас.

Получаем OAuth-токен.
Копируем в адресную строку браузера: https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор_приложения>
и вместо <идентификатор_приложения> ставим ClientID на который мы ранее обращали внимание.
Получается что-то вроде: https://oauth.yandex.ru/authorize?response_type=token&client_id=4e02a92fbff049f182f4543e35e1e85f
и переходим по этому адресу в браузере.

Яндекс попросит вас авторизоваться (он должен показать логин администратора домена и ниже будут перечислены права доступа - нам нужны права по чтению и редактированию организации и пользователей). Подтверждаем - входим.
И видим наш OAuth-токен. Копируем куда-то или не закрываем эту вкладку браузера.

Теперь получаем id организации (без API)*:
заходим в https://admin.yandex.ru/ , выбираем вашу организацию, заходим в нее и в левом нижнем углу будет строчка ID 0000000, где 00000000 - id вашей организации.
*) раньше здесь было описание как получить id организации по API (поэтому в права мы ранее добавляли directory:read_organization и directory:write_organization), но нам же нужно быстро публичное имя поменять, поэтому просто смотрим id в кабинете организации (но кому интересно получить это по API - напишите, расскажу как).

Получаем id сотрудника которого нужно изменить.
Сейчас и далее будем пользоваться онлайн сервисом отправки API запросов. Гуглим "send api requests online" и выбираем, например: https://reqbin.com/
- далее буду использовать сервис reqbin.com, но они все +/- одинаковые. Но помните о безопасности! Мы будем передавать ключи авторизации, в том числе на запись, если они попадут в руки жуликам, сами знаете что. Так что на свой страх и риск! В любом случае, как только сделаете изменение публичного имени, сразу удалите ваше приложение из https://oauth.yandex.ru/client/. В качестве альтернативы онлайн-сервису, можете скачать и использовать широко рекомендуемый (но не значит, что безопасный) Postman API Platform: https://postman.com/downloads

Итак, получаем id сотрудника которого нужно изменить:
- в основное поле запроса вводите:
-- где, нули это id вашей организации.
- переходим на вкладку "Headers" (ниже поля запроса) и
-- в поле "Key" вставляем Authorization
-- в поле "Value" напротив вставляем OAuth хххххххххххххххххххххххххххххххххххххххххххххххххххх
-- где, иксы это ваш OAuth-токен (который мы получили выше). OAuth перед токеном должен стоять обязательно.
Жмем Send (справа от строки запроса).

В поле Body вы увидите всех сотрудников организации - ищите нужного по nickname и берите его id (длинная строка - 16 цифр)
Вкладку с https://reqbin.com/ не закрываем, нам с ней дальше работать.

А теперь меняем публичное имя (наконец-то!):
- в основное поле запроса вводите:
-- где нули - это id организации, а восьмерки - это id сотрудника
- справа от строки запроса выбираете PATCH (там сейчас стоит GET)
- на вкладке Body (под строкой запроса) отмечаем JSON и в поле ниже вставляем
{
"displayName": "Имя Фамилия"
}

-- где Имя Фамилия - это требуемое публичное имя сотрудника

Жмем Send.

В ответе (поле body) будет блок с новым (измененым) публичным именем:
"name": {
"first": "Имя",
"last": "Фамилия",
"middle": ""
},

Вот и всё.

Заходим в https://oauth.yandex.ru/client/ и удаляем приложение (на всякий случай). Убедитесь, что удалили приложение!


Если что-то не понятно - пишите.

--------------------------------------------------------------------
Встречающиеся ошибки:
HTTP/1.1 403 Forbidden
Content-Length: 175
content-type: application/json
date: Wed, 04 Dec 2024 09:12:37 GMT
x-request-id: 1733303557945994-7996189370115825557
{"code":7,"message":"No required scope","details":[{"@type":"type.googleapis.com/google.rpc.RequestInfo","requestId":"1733303557945994-7996189370115825557","servingData":""}]}

Полезное:
коды ошибок: https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 
Последнее редактирование:
Сверху