Omniauth를 사용하면 Github에 로그인한 사용자의 리포지토리를 어떻게 볼 수 있나요?

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

문제

사용자가 Github를 사용하여 로그인할 수 있도록 Rails 4 애플리케이션에 Omniauth를 설정했습니다.

이 부분은 잘 작동합니다.

이제 해당 사용자의 리포지토리를 나열하고 싶습니다(범위를 요청합니다). repo 사용자에게 내 앱을 승인하라고 요청할 때.

인터넷 검색을 많이 했지만 어떻게 해야 하는지 모르겠습니다.

누구든지 기존 인증을 사용하여 내 사용자의 저장소를 나열할 수 있는 방법을 알려주실 수 있습니까?

도움이 되었습니까?

해결책

음, OmniAuth는 유연한 인증 라이브러리일 뿐입니다.유일한 목적은 사용자를 인증하는 것입니다.당신이 원하는 모든 사용자 정의 동작은 당신이나 다른 gem에 의해 구현되어야 합니다.

간단히 사용하여 원하는 것을 얻을 수 있습니다 GitHub의 잘 문서화된 API:

# 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