Domanda

Ho configurato Omniauth sulla mia applicazione per consentire all'utente di accedere utilizzando GitHub.

Questa parte funziona bene.

Ora, vorrei elencare i repository di quell'utente (richiedo l'ambito repo quando chiede all'utente di autorizzare la mia app.

Ho fatto molto googling, ma non capisco come farlo.

Qualcuno può dirmi come posso utilizzare l'autenticazione esistente per elencare i repository del mio utente?

È stato utile?

Soluzione

Bene, Omniauth è solo una biblioteca di autenticazione flessibile.Il suo unico scopo è quello di autenticare gli utenti.Qualsiasi comportamento personalizzato che desideri deve essere implementato da te o da un altro gemma.

Puoi ottenere ciò che desideri semplicemente usando API documentata di 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)
.

Se questo è tutto ciò di cui hai bisogno, quindi con tutti i mezzi, usalo.Se hai altri requisiti oltre a questo, forse dovresti dare un'occhiata a Gem . .

Inoltre, è necessario utilizzare solo l'ambito repo se si desidera accedere ai repositori privati dei propri utenti.E richiedere l'accesso ai repositori privati di un utente è un po 'invadente, quindi non farlo leggermente.

Se vuoi davvero accedere ai reposti privati di un utente, devi aggiungere ?type=all alla fine del repos_url.Quindi dovresti fare qualcosa come:

open("#{omniauth.extra.raw_info.repos_url}?type=all" ... )
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top