Qt 如何获取google drive上所有文件夹及其名称的列表

Qt 如何获取google drive上所有文件夹及其名称的列表,qt,google-drive-api,google-drive-realtime-api,Qt,Google Drive Api,Google Drive Realtime Api,我正在用qt/c++制作一个应用程序,我想将图像上载到一个特定文件夹。我试图获取所有文件夹的列表,但它没有为我提供文件夹的名称。我想获取它们的名称,以便用户可以从文件夹列表中选择一个特定文件夹,然后我可以上载到该特定文件夹。我的代码:作为对此代码的响应,我获得种类、etag、selflink和items数组,其中每个项都有foll。字段:kind=drivechildReference、id、selflink、childlink。我想获取所有文件夹的名称 我自己解决了这个问题。下面是获取qt中所

我正在用qt/c++制作一个应用程序,我想将图像上载到一个特定文件夹。我试图获取所有文件夹的列表,但它没有为我提供文件夹的名称。我想获取它们的名称,以便用户可以从文件夹列表中选择一个特定文件夹,然后我可以上载到该特定文件夹。我的代码:作为对此代码的响应,我获得种类、etag、selflink和items数组,其中每个项都有foll。字段:kind=drivechildReference、id、selflink、childlink。我想获取所有文件夹的名称 我自己解决了这个问题。下面是获取qt中所有文件夹和子文件夹列表的代码:

void googled::tryFolderListing(QNetworkReply *reply){
am = new QNetworkAccessManager;

QByteArray d = reply->readAll();
QString x = getValue(d,"access_token");
x = "Bearer " + x;
QUrl url("https://www.googleapis.com/drive/v2/files");
url.addQueryItem(QString("q").toAscii(),QString("mimeType = 'application/vnd.google-apps.folder'").toAscii());
QNetworkRequest request;
request.setUrl(url);
request.setRawHeader(QString("Content-Type").toAscii(),QString("application/json").toAscii());
request.setRawHeader(QString("Authorization").toAscii(),x.toAscii());
QObject::connect(am, SIGNAL(finished(QNetworkReply *)),
this, SLOT(uploadfinishedSlot(QNetworkReply *)));
am->get(request);

}

首先,如果您正在与用户交互以从驱动器中选择特定的文件或文件夹,请使用。实现自己的选择器是非常低效和缓慢的。而且只需几行javascript代码,您就可以完全做您想要做的事情

其次,您使用的children.list不能为文件提供足够的信息。您应该使用query mimeType='application/vnd.google apps.folder'和trashed=false,这样您就可以获得所需的所有文件夹信息


第三,您忘记实现pageToken。对于一些拥有大量文件/文件夹的用户,他们可能会点击maxResults,而query可能不会显示您想要的所有文件/文件夹。请更深入地查看示例代码。

修改代码后,我向此url发送了一个get请求:但我得到了foll。错误:{error:{errors:[{domain:global,reason:invalid,message:invalid Value,location:q}],代码:400,message:invalid Value}}我的代码:@JunYoung Gwak我也不能对我的应用程序使用google picker错误消息说你的查询参数q格式错误。代码中的查询没有问题。这可能意味着您没有正确解析url。正确解析查询时,您的查询应该如下所示:GEThttps://www.googleapis.com/drive/v2/files?q=mimeType%3D'application%2ffnd.google apps.folder'&key={YOUR_API_key}我不擅长QT,所以这是我能帮助你的最好方法。我需要密钥参数吗?因为我已经在headerMy bad中传递了访问令牌,你不需要密钥参数