Получение информации об организациях пользователя#29
Получение информации об организациях пользователя#29shahruslan wants to merge 4 commits intofr05t1k:masterfrom
Conversation
| return "http://esia.gosuslugi.ru/{$scope}?org_oid={$orgId}"; | ||
| }, $scopes); | ||
|
|
||
| $this->refreshToken($scopes); |
There was a problem hiding this comment.
А для чего обновлять токен при запросе организации?
There was a problem hiding this comment.
Для того, чтобы передать скоуп вида http://esia.gosuslugi.ru/org_inn?org_oid=#ид_организации_который_нам_заранее_не_известен#
этот идентификатор мы получаем только после получения списка организаций. И если мы не обновим токен, то мы не можем запросить инн(например) организации, потому что скоуп org_inn не передан при первом обращении. При обновлении токена, мы передаем новые скоупы, по которум уже сможем получить данные организации.
Как я и написал выше, если идентификатор заранее известен, то можно обойтись и одним запросом, без обновления токена. Но этот случай очень редкий.
There was a problem hiding this comment.
Странно, а разве пользователь не должен дать согласие на получение данных из другого скоупа, нежели был изначально запрошен при получение токена? Есть ссылка на документацию где можно почитать об этом?
There was a problem hiding this comment.
Да, странно. Если передать скоуп вида http://esia.gosuslugi.ru/org_inn?org_oid=123 при первом запросе на получение авторизационного кода, то да, запрос на согласие предоставления инн организации появится. Но org_oid мы получаем только после того как запросим скоуп usr_org. Так что тут или еще раз сделать редирект на $portalUrl, но уже со скоупами организаций. Или вот таким способом.
Документация вот https://digital.gov.ru/ru/activity/directions/13/#section-docs
Методические рекомендации ... Раздел В.3
There was a problem hiding this comment.
Да, пробовал. Там возвращаются не все данные, а только этот набор из списка. Другие данные вытащить не получалось.
| $orgId = $matches[1]; | ||
|
|
||
| $scopes = array_map(function ($scope) use ($orgId) { | ||
| return "http://esia.gosuslugi.ru/{$scope}?org_oid={$orgId}"; |
There was a problem hiding this comment.
Тут наверно должно было использовано свойство $portalUrl
There was a problem hiding this comment.
Нет, валидный скоуп именно такой, должен начинаться с http://esia.gosuslugi.ru/
Если мы будем передавать $portalUrl, то на тестовом стенде ЕСИА это не сработает, потому как там $portalUrl отличается.
There was a problem hiding this comment.
Да, можно.
А как лучше назвать, ESIA_URL ?)
|
Ну и не плохо было бы покрыть тестами методы |

Раньше информацию можно было получить одним запросом. Теперь нужно использовать два запроса. В первом запросе получаем идентификаторы организаций, а во втором уже непосредственно данные. Конечно, если заранее знать идентификатор организации, можно обойтись и одним запросом.
На тестовых аккаунтах работает без ошибок, на боевых пока проверить не смог.