func (au AuthorizeSocialController) HandleAuthLogin(w http.ResponseWriter, r *http.Request, p httprouter.Params) { goth.UseProviders( //GITHUB_KEY=fc707d20633ddddc6a25 GITHUB_SECRET=6bb334feb9a6e111d4c59dabda9c76a98947029b go run main.go //FACEBOOK_KEY=1620451968207611 FACEBOOK_SECRET=5bb72a6aa6bf30d24346c3e7b71c1f53 go run main.go //GPLUS_KEY=1033420881797-3kclq93hc84d1v46rtgki7vs7sdr4l0e.apps.googleusercontent.com GPLUS_SECRET=Ni6buYWXaK7MTG3EYBGnoH6l go run main.go facebook.New(os.Getenv("f"), os.Getenv("FACEBOOK_SECRET"), facebookCallBack), gplus.New(os.Getenv("GPLUS_KEY"), os.Getenv("GPLUS_SECRET"), googleCallBack), github.New(os.Getenv("GITHUB_KEY"), os.Getenv("GITHUB_SECRET"), gitHubCallBack), ) gothic.BeginAuthHandler(w, r, p) }
func main() { goth.UseProviders( twitter.New(os.Getenv("TWITTER_KEY"), os.Getenv("TWITTER_SECRET"), "http://localhost:3000/auth/twitter/callback"), // If you'd like to use authenticate instead of authorize in Twitter provider, use this instead. // twitter.NewAuthenticate(os.Getenv("TWITTER_KEY"), os.Getenv("TWITTER_SECRET"), "http://localhost:3000/auth/twitter/callback"), facebook.New(os.Getenv("FACEBOOK_KEY"), os.Getenv("FACEBOOK_SECRET"), "http://localhost:3000/auth/facebook/callback"), gplus.New(os.Getenv("GPLUS_KEY"), os.Getenv("GPLUS_SECRET"), "http://localhost:3000/auth/gplus/callback"), github.New(os.Getenv("GITHUB_KEY"), os.Getenv("GITHUB_SECRET"), "http://localhost:3000/auth/github/callback"), spotify.New(os.Getenv("SPOTIFY_KEY"), os.Getenv("SPOTIFY_SECRET"), "http://localhost:3000/auth/spotify/callback"), linkedin.New(os.Getenv("LINKEDIN_KEY"), os.Getenv("LINKEDIN_SECRET"), "http://localhost:3000/auth/linkedin/callback"), lastfm.New(os.Getenv("LASTFM_KEY"), os.Getenv("LASTFM_SECRET"), "http://localhost:3000/auth/lastfm/callback"), twitch.New(os.Getenv("TWITCH_KEY"), os.Getenv("TWITCH_SECRET"), "http://localhost:3000/auth/twitch/callback"), dropbox.New(os.Getenv("DROPBOX_KEY"), os.Getenv("DROPBOX_SECRET"), "http://localhost:3000/auth/dropbox/callback"), digitalocean.New(os.Getenv("DIGITALOCEAN_KEY"), os.Getenv("DIGITALOCEAN_SECRET"), "http://localhost:3000/auth/digitalocean/callback", "read"), ) // Assign the GetState function variable so we can return the // state string we want to get back at the end of the oauth process. // Only works with facebook and gplus providers. gothic.GetState = func(req *http.Request) string { // Get the state string from the query parameters. return req.URL.Query().Get("state") } p := pat.New() p.Get("/auth/{provider}/callback", func(res http.ResponseWriter, req *http.Request) { // print our state string to the console fmt.Println(gothic.GetState(req)) user, err := gothic.CompleteUserAuth(res, req) if err != nil { fmt.Fprintln(res, err) return } t, _ := template.New("foo").Parse(userTemplate) t.Execute(res, user) }) p.Get("/auth/{provider}", gothic.BeginAuthHandler) p.Get("/", func(res http.ResponseWriter, req *http.Request) { t, _ := template.New("foo").Parse(indexTemplate) t.Execute(res, nil) }) http.ListenAndServe(":3000", p) }
func githubProvider() *github.Provider { return github.New(os.Getenv("GITHUB_KEY"), os.Getenv("GITHUB_SECRET"), "/foo", "user") }