Как с помощью Omniauth просмотреть репозитории пользователя, который входит в систему с помощью Github?

StackOverflow https://stackoverflow.com//questions/24004142

Вопрос

Я настроил Omniauth в своем приложении Rails 4, чтобы позволить пользователю войти в систему с помощью Github.

Эта часть работает нормально.

Теперь я хотел бы перечислить репозитории этого пользователя (я запрашиваю область действия repo когда просишь пользователя авторизовать мое приложение.

Я много гуглил, но не понимаю, как это сделать.

Может ли кто-нибудь сказать мне, как я могу использовать существующую аутентификацию для получения списка репозиториев моего пользователя?

Это было полезно?

Решение

Ну, OmniAuth — это просто гибкая библиотека аутентификации.Его единственная цель — аутентификация пользователей.Любое пользовательское поведение, которое вы желаете, должно быть реализовано либо вами, либо другим драгоценным камнем.

Вы можете добиться того, чего хотите, просто используя Хорошо документированный API GitHub:

# callbacks_controller.rb
require "open-uri"
require "json"

omniauth = env['omniauth.auth']
repositories_json = open(omniauth.extra.raw_info.repos_url,
  "Accept" => "application/vnd.github.v3+json",
  "Authorization" => "token #{omniauth.credentials.token}"
).read
repositories = JSON.parse(repositories_json)

Если это все, что вам нужно, то обязательно используйте это.Если у вас есть другие требования, кроме этого, возможно, вам стоит взглянуть на драгоценный камень github.

Кроме того, вам следует использовать только область repo если вы хотите получить доступ к частным репозиториям ваших пользователей.А запрос доступа к личным репозиториям пользователя немного навязчив, поэтому не делайте этого легкомысленно.

Если вы действительно хотите получить доступ к личным репозиториям пользователя, вам нужно добавить ?type=all до конца repos_url.Итак, вам придется сделать что-то вроде:

open("#{omniauth.extra.raw_info.repos_url}?type=all" ... )
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top