Google drive API V3如何正确转义查询参数?

Google drive API V3如何正确转义查询参数?,go,encoding,google-drive-api,Go,Encoding,Google Drive Api,给定:使用名称中带有空格的文件夹访问Google Drive 问题:查询: name='07 Dirname' and mimeType='application/vnd.google-apps.folder' and '0B22uLx7BCvv9T0FWRmNaREY4VEE' in parents and trashed=false 不在API上工作,但如果目录中没有空间,则会工作。 但是,如果从提供提示的运行查询,则该查询确实有效:此参数是URL编码的 但是,当我使用url.QueryE

给定:使用名称中带有空格的文件夹访问Google Drive

问题:查询:

name='07 Dirname' and mimeType='application/vnd.google-apps.folder' and '0B22uLx7BCvv9T0FWRmNaREY4VEE' in parents and trashed=false
不在API上工作,但如果目录中没有空间,则会工作。 但是,如果从提供提示的运行查询,则该查询确实有效:此参数是URL编码的

但是,当我使用url.QueryEscapeurl.PathEscape对名称字段进行编码时,无法找到文件夹。据我所知,没有必要对整个查询进行编码,只需对参数进行编码,但如何编码呢


Thx.

查询需要进行双重编码才能工作,因此,请先对上面给出的搜索调用url.queryscape,然后再对查询字符串调用url.queryscape

如果您使用ChromeDevTools查看API资源管理器,您将看到双重编码的值,尽管页面本身显示了误导性的内容


e、 g.类似于
https://content.googleapis.com/drive/v3/files?q=name%3D%2707+Dirname%27+和+mimeType%3D%27application%2ffnd.google apps.folder%27+和+%270b22ulx7bcvvv9t0fwrmnarey4vee%27+在+parents+和+trashed%3dflse&key={APIKEY}
我找到了访问此目录不起作用的原因。默认范围是:

按文件访问文件 由应用程序创建或打开。文件授权是在 基于每个用户,并在用户取消应用程序授权时撤销

但要访问应用程序未创建的文件夹,我需要此文件夹:

访问的完整、允许范围 用户的所有文件,不包括应用程序数据文件夹。要求 只有在严格必要时,才允许此范围

可以通过如下设置配置的范围来请求:

func establishConnection() (*drive.Service, error) {
    b, err := ioutil.ReadFile("client_secret.json")
    if err != nil {
        logrus.Fatalf("Unable to read client secret file: %v", err)
    }

    // If modifying these scopes, delete your previously saved client_secret.json.
    config, err := google.ConfigFromJSON(b, drive.DriveScope)
    if err != nil {
        logrus.Fatalf("Unable to parse client secret file to config: %v", err)
    }

    return drive.New(getClient(config))
}