// TODO(mpl): same in twitter. refactor. Except for the additional perms in AuthorizationURL call. func (imp) ServeSetup(w http.ResponseWriter, r *http.Request, ctx *importer.SetupContext) error { oauthClient, err := ctx.NewOAuthClient(oAuthURIs) if err != nil { err = fmt.Errorf("error getting OAuth client: %v", err) httputil.ServeError(w, r, err) return err } tempCred, err := oauthClient.RequestTemporaryCredentials(ctx.HTTPClient(), ctx.CallbackURL(), nil) if err != nil { err = fmt.Errorf("Error getting temp cred: %v", err) httputil.ServeError(w, r, err) return err } if err := ctx.AccountNode.SetAttrs( importer.AcctAttrTempToken, tempCred.Token, importer.AcctAttrTempSecret, tempCred.Secret, ); err != nil { err = fmt.Errorf("Error saving temp creds: %v", err) httputil.ServeError(w, r, err) return err } authURL := oauthClient.AuthorizationURL(tempCred, url.Values{"perms": {"read"}}) http.Redirect(w, r, authURL, http.StatusFound) return nil }
func (im extendedOAuth2) auth(ctx *importer.SetupContext) (*oauth.Config, error) { clientId, secret, err := ctx.Credentials() if err != nil { return nil, err } conf := im.oauthConfig conf.ClientId, conf.ClientSecret, conf.RedirectURL = clientId, secret, ctx.CallbackURL() return &conf, nil }
func (*imp) ServeSetup(w http.ResponseWriter, r *http.Request, ctx *importer.SetupContext) error { // ServeSetup gets called at the beginning of adding a new account // to an importer, or when an account is being re-logged into to // refresh its access token. // You typically start the OAuth redirect flow here. // The importer.OAuth2.RedirectURL and importer.OAuth2.RedirectState helpers can be used for OAuth2. http.Redirect(w, r, ctx.CallbackURL(), http.StatusFound) return nil }
// auth returns a new oauth.Config func auth(ctx *importer.SetupContext) (*oauth.Config, error) { clientId, secret, err := ctx.Credentials() if err != nil { return nil, err } return &oauth.Config{ ClientId: clientId, ClientSecret: secret, AuthURL: authURL, TokenURL: tokenURL, RedirectURL: ctx.CallbackURL(), }, nil }
func (im imp) auth(ctx *importer.SetupContext) (*oauth2.Config, error) { clientID, secret, err := ctx.Credentials() if err != nil { return nil, err } conf := &oauth2.Config{ Endpoint: google.Endpoint, RedirectURL: ctx.CallbackURL(), ClientID: clientID, ClientSecret: secret, Scopes: []string{scopeURL}, } return conf, nil }
// auth returns a new oauth2 Config func auth(ctx *importer.SetupContext) (*oauth2.Config, error) { clientID, secret, err := ctx.Credentials() if err != nil { return nil, err } return &oauth2.Config{ ClientID: clientID, ClientSecret: secret, Endpoint: oauth2.Endpoint{ AuthURL: authURL, TokenURL: tokenURL, }, RedirectURL: ctx.CallbackURL(), // No scope needed for foursquare as far as I can tell }, nil }
func (im *imp) ServeSetup(w http.ResponseWriter, r *http.Request, ctx *importer.SetupContext) error { cred, err := auth(ctx) if err != nil { err = fmt.Errorf("Error getting API credentials: %v", err) httputil.ServeError(w, r, err) return err } oauthClient.Credentials = *cred tempCred, err := oauthClient.RequestTemporaryCredentials(ctx.HTTPClient(), ctx.CallbackURL(), nil) if err != nil { err = fmt.Errorf("Error getting temp cred: %v", err) httputil.ServeError(w, r, err) } im.setCreds(tempCred) authURL := oauthClient.AuthorizationURL(tempCred, nil) http.Redirect(w, r, authURL, 302) return nil }