Skip to content

Instantly share code, notes, and snippets.

@reusee
Created August 7, 2013 15:28
Show Gist options
  • Select an option

  • Save reusee/6175101 to your computer and use it in GitHub Desktop.

Select an option

Save reusee/6175101 to your computer and use it in GitHub Desktop.
google drive demo
package main
import (
"code.google.com/p/goauth2/oauth"
drive "code.google.com/p/google-api-go-client/drive/v2"
"code.google.com/p/go.net/proxy"
"log"
"fmt"
"net/http"
)
func main() {
config := &oauth.Config{
ClientId: "",
ClientSecret: "",
Scope: drive.DriveScope,
AuthURL: "https://accounts.google.com/o/oauth2/auth",
TokenURL: "https://accounts.google.com/o/oauth2/token",
RedirectURL: "oob",
TokenCache: oauth.CacheFile(".gdrive_auth"),
}
p, err := proxy.SOCKS5("tcp", "localhost:23456", nil, proxy.Direct)
if err != nil { log.Fatal(err) }
transport := &oauth.Transport{
Config: config,
Transport: &http.Transport{
Dial: p.Dial,
},
}
token, err := config.TokenCache.Token()
if err != nil {
url := config.AuthCodeURL("")
fmt.Printf("%s\n", url)
var code string
fmt.Scanf("%s\n", &code)
token, err = transport.Exchange(code)
if err != nil {
log.Fatal(err)
}
}
transport.Token = token
client := transport.Client()
service, err := drive.New(client)
if err != nil {
log.Fatal(err)
}
perPage := int64(1000)
files, err := service.Files.List().MaxResults(perPage).Do()
if err != nil { log.Fatal(err) }
for {
for i, f := range files.Items {
fmt.Printf("%d %s %s %s\n", i, f.Title, f.CreatedDate, f.MimeType)
}
if files.NextPageToken != "" {
files, err = service.Files.List().MaxResults(perPage).PageToken(files.NextPageToken).Do()
if err != nil { log.Fatal(err) }
continue
}
break
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment