Bri*_*ian 7 android oauth google-drive-api
在用户使用标准 OAuth 同意流程链接帐户后,我的应用程序使用 Google Drive API 在用户的 Google Drive 帐户上使用非敏感范围在隔离文件夹中创建/管理文件。
我为 OAuth 同意屏幕启用了以下范围:
我正在观察用户报告的问题,其中客户由于以下堆栈跟踪而无法在其 Google 云端硬盘帐户上执行操作:
Non-fatal Exception: com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:297)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:868)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:476)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:409)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:526)
at com.mystuff.app.cloud.google.drive.GoogleDriveQuery.executeListQuery(GoogleDriveQuery.java:84)
at com.mystuff.app.cloud.google.drive.GoogleDriveQuery.getList(GoogleDriveQuery.java:39)
...
Caused by com.google.android.gms.auth.UserRecoverableAuthException: NeedRemoteConsent
at com.google.android.gms.auth.zze.zzb(zze.java:13)
at com.google.android.gms.auth.zzd.zza(zzd.java:77)
at com.google.android.gms.auth.zzd.zzb(zzd.java:20)
at com.google.android.gms.auth.zzd.getToken(zzd.java:7)
at com.google.android.gms.auth.zzd.getToken(zzd.java:5)
at com.google.android.gms.auth.zzd.getToken(zzd.java:2)
at com.google.android.gms.auth.GoogleAuthUtil.getToken(GoogleAuthUtil.java:55)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:267)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:292)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:868)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:476)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:409)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:526)
at com.mystuff.app.cloud.google.drive.GoogleDriveQuery.executeListQuery(GoogleDriveQuery.java:84)
...
Run Code Online (Sandbox Code Playgroud)
执行的代码是这样的,它本质上获取我的应用程序创建的所有符合条件的文件夹的列表:
private FileList executeListQuery(GoogleDriveService driveService, String q, String pageToken) {
try {
final Drive.Files.List query =
driveService
.get()
.files()
.list()
.setSpaces("drive")
.setQ(q)
.setFields(FILE_LIST_FIELDS)
.setOrderBy("createdTime desc");
if (pageToken != null) {
query.setPageToken(pageToken);
}
return query.execute();
} catch (IOException e) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我不认为这个问题特定于这段代码,而是在我对 Google API 执行查询的任何地方。
似乎这个问题只发生在某些用户身上,即使他们已经同意了所有请求的权限,并且我的 API 配置启用了正确的非敏感范围。我无法在自己的客户端上重现该问题,但我可以通过用户提供的屏幕截图确认即使在同意屏幕期间完全授予了权限,也会出现此问题。
有谁知道可能导致此问题的原因是什么?对于某些用户来说,此问题似乎一直存在,并且似乎无法自行修复。我不确定它是否特定于帐户。
其他背景和我尝试过的事情:
| 归档时间: |
|
| 查看次数: |
1486 次 |
| 最近记录: |