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