Список всех организаций из Github с использованием Octokit

В моем приложении rails я хотел бы перечислить организации пользователей и их репозитории. Я аутентифицируюсь с помощью Github, используя omniauth-github, поэтому, как только я получаю токен от Github, я делаю это:

client = Octokit::Client.new(:access_token => token)
client.orgs

В omniauth.rb

provider :github, ENV['GITHUB_CLIENT_ID'], ENV['GITHUB_CLIENT_SECRET']

Выдает ошибку GET https://api.github.com/user/orgs: 403 - You need at least read:org scope or user scope to list your organizations. // See: https://developer.github.com/v3/orgs/#list-your-organizations

Поэтому я добавляю это в инициализатор и перезапускаю сервер:

provider :github, ENV['GITHUB_CLIENT_ID'], ENV['GITHUB_CLIENT_SECRET'], scope: 'read:org'

но я получаю ту же ошибку.

Я также попытался указать область действия в клиенте Octokit:

client.create_authorization({:idempotent => true, :client_id => 'xxxx', :client_secret => 'yyyy', :scopes => ["read:org"]})

но я получаю сообщение, что здесь разрешена только базовая аутентификация.

Я хотел бы спросить вас, что мне здесь не хватает?


person jedi    schedule 30.10.2017    source источник
comment
Вы уверены, что установили правильные права чтения для токена OAuth, используемого вашим приложением? (github.com/settings/developers)   -  person MrYoshiji    schedule 30.10.2017
comment
Я установил для всего только чтение, поэтому у меня должен быть доступ к нему, но я получаю сообщение об ошибке 403. Любые другие идеи?   -  person jedi    schedule 30.10.2017


Ответы (2)


Вероятно, вы вошли в систему, не предоставив разрешения для области «чтение: org». Возможно, вы захотите попробовать повторно войти в систему и посмотреть, нужно ли вам дать свое разрешение для вновь добавленной области. Вполне может быть, что существует несоответствие между вашей базой данных в Rails/токенах и потоком GitHub OAuth.

person jbehrens94    schedule 30.10.2017
comment
Я попытался выйти из системы, снова пройти аутентификацию в своем приложении, но получаю ту же ошибку. Я не храню токены в своей базе данных, так как не думаю, что они являются постоянными сеансами. - person jedi; 30.10.2017

После более глубокого изучения я выяснил, что для получения организаций требуется базовая аутентификация (имя пользователя и пароль) или токен OAuth. поэтому я создал токен, и теперь он отлично работает.

person jedi    schedule 31.10.2017