Есть три сервиса, работающих по OAuth 2.0. Service#0 - там основные данные пользователя. Сайт - это "морда" к Service#1, куда пользователь штатным образом с редиректами логинится через Service#0. Задача - подключить Service#2 к Service#1 (не к сайту, а именно к серверу), так чтобы Service#2 поимел ключ доступа к данным Service#0 для того же ресурса, что и Service#1. Другими словами - #1 хочет залогиниться на #2 через #0, подтвердив, что он и есть тот пользователь. Не могу понять flow, которым это кошерно организовать через OAuth.

Мое предположение костыльное. #1 получает токен для доступа у #0 путем стандартного Authorization Code Grant через сайт. Затем, когда надо, #1 сам регистрируется на #2 с client_credentials. И получает как бы ключ сессии. Потом просит у #0 некий код для #2 подтвердив себя своим же токеном, который у него уже есть. #1 отдаёт полученный код в #2, #2 получает у #0 по коду токен и записывает, что считать эту сессию с #1 аутентифицированной как вот тот пользователь, что он захватил у #0.

Но я вот сомневаюсь по поводу пункта "просит у #0 некий код для #2 подтвердив себя своим же токеном". Может есть стандартная последовательсность действий?