diff options
| -rw-r--r-- | auth/oauth.go | 14 | ||||
| -rw-r--r-- | gdrive.go | 5 | ||||
| -rw-r--r-- | handlers_drive.go | 8 |
3 files changed, 27 insertions, 0 deletions
diff --git a/auth/oauth.go b/auth/oauth.go index 1f2884b..965c7cc 100644 --- a/auth/oauth.go +++ b/auth/oauth.go @@ -50,6 +50,20 @@ func NewRefreshTokenClient(clientId, clientSecret, refreshToken string) *http.Cl ) } +func NewAccessTokenClient(clientId, clientSecret, accessToken string) *http.Client { + conf := getConfig(clientId, clientSecret) + + token := &oauth2.Token{ + TokenType: "Bearer", + AccessToken: accessToken, + } + + return oauth2.NewClient( + oauth2.NoContext, + conf.TokenSource(oauth2.NoContext, token), + ) +} + func getConfig(clientId, clientSecret string) *oauth2.Config { return &oauth2.Config{ ClientID: clientId, @@ -33,6 +33,11 @@ func main() { Patterns: []string{"--refresh-token"}, Description: "Oauth refresh token used to get access token (for advanced users)", }, + cli.StringFlag{ + Name: "accessToken", + Patterns: []string{"--access-token"}, + Description: "Oauth access token, only recommended for short-lived requests because of short lifetime (for advanced users)", + }, } handlers := []*cli.Handler{ diff --git a/handlers_drive.go b/handlers_drive.go index 4fa00cf..3ca2c6a 100644 --- a/handlers_drive.go +++ b/handlers_drive.go @@ -311,10 +311,18 @@ func aboutExportHandler(ctx cli.Context) { } func getOauthClient(args cli.Arguments) (*http.Client, error) { + if args.String("refreshToken") != "" && args.String("accessToken") != "" { + ExitF("Access token not needed when refresh token is provided") + } + if args.String("refreshToken") != "" { return auth.NewRefreshTokenClient(ClientId, ClientSecret, args.String("refreshToken")), nil } + if args.String("accessToken") != "" { + return auth.NewAccessTokenClient(ClientId, ClientSecret, args.String("accessToken")), nil + } + configDir := args.String("configDir") tokenPath := ConfigFilePath(configDir, TokenFilename) return auth.NewFileSourceClient(ClientId, ClientSecret, tokenPath, authCodePrompt) |
