package main import ( "context" "time" "golang.org/x/oauth2" "gopkg.in/mxpv/patreon-go.v1" ) func makePatreon() (*patreon.Client, error) { config := oauth2.Config{ ClientID: *patreonClientID, ClientSecret: *patreonClientSecret, Endpoint: oauth2.Endpoint{ AuthURL: patreon.AuthorizationURL, TokenURL: patreon.AccessTokenURL, }, Scopes: []string{"users", "pledges-to-me", "my-campaign"}, } token := oauth2.Token{ AccessToken: *patreonAccessToken, RefreshToken: *patreonRefreshToken, // Must be non-nil, otherwise token will not be expired Expiry: time.Now().Add(-24 * time.Hour), } tc := config.Client(context.Background(), &token) client := patreon.NewClient(tc) _, err := client.FetchUser() if err != nil { return nil, err } return client, nil }