func tokenCacheFile() string {
	return filepath.Join("./", "drive-go-quickstart.json")
}
tokenCacheFile generates credential file path/filename.
It returns the generated credential path/filename.
package googledrive
import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	httpLocal "main/graph/net/http"
	"math"
	"net/http"
	"os"
	"path"
	"path/filepath"
	"strconv"
	"strings"
	"sync"
	"time"
	"unsafe"
	"google.golang.org/api/googleapi"
	"golang.org/x/net/context"
	"golang.org/x/oauth2"
	"golang.org/x/oauth2/google"
	"google.golang.org/api/drive/v3"  
)
var chunkSize = 10 * 1024 * 1024
func changeChunkSize(block int) {
	chunkSize = block * 1024 * 1024
}
var wg sync.WaitGroup
var threads = 3
var pool = make(chan struct{}, threads)
func changeThread(thread int) {
	threads = thread
	pool = make(chan struct{}, threads)
}
func getClient(file string, ctx context.Context, config *oauth2.Config) *http.Client {
	tok := &oauth2.Token{}  
	return config.Client(ctx, tok)  
}
func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {
	authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)
	fmt.Printf("在浏览器中进入以下链接，然后输入授权码: \n%v\n", authURL)
	var code string
	if _, err := fmt.Scan(&code); err != nil {
		log.Fatalf("Unable to read authorization code %v", err)
	}
	tok, err := config.Exchange(oauth2.NoContext, code)
	if err != nil {
		log.Fatalf("Unable to retrieve token from web %v", err)
	}
	return tok
}
func GetURL() string {
	_, config := gdInit()
	authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)
	return authURL
}