У меня есть приложение разработчика на GitHub. Когда новые пользователи регистрируются на моем сайте, я запрашиваю область «admin: repo_hook». Они столкнулись с экраном авторизации GitHub, они нажали «Принять», и они вернулись на мой сайт, на котором они сейчас вошли.Как сохранить постоянный охват GitHub OAuth между посещениями?
Идентификатор пользователя и сведения о любых областях, предоставленных пользователем , хранятся в моей базе данных.
Когда они начинают использовать мой сайт, я запрашиваю дополнительные области и когда необходимо, например. 'Repo_deployment. Чтобы предотвратить отмену уже предоставленных разрешений, я передаю все текущие области (вытащил из базы данных) вместе с новым запросом области, то есть «scope = repo_deployment, admin: repo_hook». Пользователь снова сталкивается с экраном авторизации GitHub, он предоставляет разрешения для развертывания репо, и они перенаправляются обратно на мой сайт.
Моя проблема возникает, когда пользователь подписывается на моем сайте, а затем пытается войти в систему. При входе я понятия не имею, является ли это новым пользователем или существующим пользователем.
Если я только передаю «admin: repo_hook» как необходимый объем, тогда GitHub думает, что я хочу сейчас аннулировать область «repo_deployment». Но я не могу запросить базу данных, чтобы узнать, какие области уже предоставлены, потому что я не знаю идентификатора пользователя без использования OAuth.
Я был бы рад использовать OAuth, так как я просто не могу пропускать какие-либо области, то есть GitHub не будет запрашивать или отменять какие-либо области для существующих пользователей моего приложения, что хорошо. Но новых пользователей будут видеть экран авторизации с запросом области «общедоступной информации», и после определения того, что пользователь является новым пользователем без предоставленных областей, мне пришлось бы отправить их на второй экран , который запрашивает для области «admin: repo_hook»!
Есть ли постоянное решение для отслеживания областей, которое позволяет мне задавать новые пользователи для определенной области, сохраняя при этом области существующих пользователей, не показывая пользователям больше экранов авторизации, чем это необходимо?