如何使用Flutter访问Google云端硬盘的appdata文件夹文件?

我有一个很老的Android项目,已经有很长时间没有接触过。它将一些用户数据存储在用户的Google云端硬盘appdata文件夹中。现在,我将应用程序更新为Flutter版本,并且由于不推荐使用GoogleDriveAPI,因此没有Flutter插件,我认为我现在需要使用googleapi。但是我找不到关于扑扑问题的很多信息。我到了用google_sign_in登录的地步:^4.0.7

GoogleSignIn _googleSignIn = GoogleSignIn(

scopes: [

'email',

'https://www.googleapis.com/auth/drive.appdata',

'https://www.googleapis.com/auth/drive.file',

],

);

try {

GoogleSignInAccount account = await _googleSignIn.signIn();

} catch (error) {

print(error);

}

效果很好,但我被困在那里。如何从那里读取用户Google云端硬盘上的appdata文件夹中的文件?

EDIT1:这个答案很有帮助,我设法获得了httpClient,但是我仍然停留在如何获取appdata文件夹及其文件的方法上。如何在波动中使用Google

API?

似乎googleapi不支持该appfolder,因为Google将来可能会弃用该appfolder(好像他们已经这样做了),以迫使我们使用Firebase支付存储费用。好的,但是如果我无法通过googleapi访问该文件夹,该如何迁移呢?如果我现在重置我的应用程序,而我的用户丢失了所有数据,我将失去我拥有的少数用户…

回答:

对我来说,以下的作品,(使用HTTP包getpost

您可以从返回的accoutn中检索auth令牌signIn

Future<String> _getAuthToken() async {

final account = await sign_in_options.signIn();

if (account == null) {

return null;

}

final authentication = await account.authentication;

return authentication.accessToken;

}

要在AppData目录中搜索文件,您需要添加spacesqueryParameters并将其设置为appDataFolder。该文档在这方面有点误导。

final Map<String, String> queryParameters = {

'spaces': 'appDataFolder',

// more query parameters

};

final headers = { 'Authorization': 'Bearer $authToken' };

final uri = Uri.https('www.googleapis.com', '/drive/v3/files', queryParameters);

final response = await get(uri, headers: headers);

要上传文件,您需要为初始上传请求设置正文的parentsto appDataFolder属性。要下载文件,您只需要fileId。

final headers = { 'Authorization': 'Bearer $authToken' };

final initialQueryParameters = { 'uploadType': 'resumable' };

final Map<String, dynamic> metaData = {

'name': fileName,

'parents': ['appDataFolder ']

};

final initiateUri = Uri.https('www.googleapis.com', '/upload/drive/v3/files', initialQueryParameters);

final initiateResponse = await post(initiateUri, headers: headers, body: json.encode(metaData));

final location = initiateResponse.headers['location'];

要下载文件,您只需要知道fileId,如果您不知道,则需要使用搜索API进行检索(请参见上文)。

final headers = { 'Authorization': 'Bearer $authToken' };

final url = 'https://www.googleapis.com/drive/v3/files/$fileId?alt=media';

final response = await get(url, headers: headers);

以上是 如何使用Flutter访问Google云端硬盘的appdata文件夹文件? 的全部内容, 来源链接: utcz.com/qa/406852.html

回到顶部