android - Android Google Drive API 切换帐户文件未找到错误
问题描述
当我用第一个帐户登录时,我可以上传图片。但是当我切换到第二个帐户时,图片没有上传,并且出现以下错误。
我唯一的问题是切换帐户后出现以下错误无法上传图片。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: xxxxx",
"locationType": "other",
"location": "file"
}
],
"code": 404,
"message": "File not found: xxxxx"
}
}
- 此外,当您使用第一个帐户重新登录时,会上传图片。
注销代码
GoogleSignInOptions options = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
GoogleSignInClient client = GoogleSignIn.getClient(MenuActivity.this,options);
driveService = null;
client.signOut().addOnCompleteListener(MenuActivity.this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(MenuActivity.this, "logout success", Toast.LENGTH_LONG).show();
}
})
.addOnFailureListener(MenuActivity.this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MenuActivity.this, "logout failed", Toast.LENGTH_LONG).show();
}
});
登录代码
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestScopes(new Scope(DriveScopes.DRIVE_FILE))
.build();
GoogleSignInClient client = GoogleSignIn.getClient(this,signInOptions);
startActivityForResult(client.getSignInIntent(),10001);
@Override
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
if(requestCode==10001 && resultCode==RESULT_OK) handleSingIntent(data);
}
private void handleSingIntent(Intent data) {
GoogleSignIn.getSignedInAccountFromIntent(data)
.addOnSuccessListener(new OnSuccessListener<GoogleSignInAccount>() {
@Override
public void onSuccess(GoogleSignInAccount googleSignInAccount) {
GoogleAccountCredential credential=GoogleAccountCredential.usingOAuth2(MenuActivity.this, Collections.singleton(DriveScopes.DRIVE_FILE));
credential.setSelectedAccount(googleSignInAccount.getAccount());
Drive googleDriveService=new Drive.Builder(AndroidHttp.newCompatibleTransport(),
new GsonFactory(),credential)
.setApplicationName("MyApp")
.build();
driveService = new DriveService(googleDriveService,MenuActivity.this);
updateImage();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MenuActivity.this,e.getLocalizedMessage(),Toast.LENGTH_SHORT).show();
}
});
}
解决方案
推荐阅读
- php - 家庭控制器内的转储和死亡(dd)
- google-query-language - 是否可以选择前 10 个项目并将其余项目放在其他项目中?就像我们可以在 SQL 中做的那样
- c# - 为什么我的 ImageButton 没有动态更新?
- azure - 通过 Visual Studio 2019 将逻辑应用部署到 Azure
- javascript - 模态图片库 - 多张图片不会显示
- excel-formula - 从单元格中的值引用数组
- python - 如何从“jetson.inference.detectNet.Detection”类型中获取单独的值?
- java - 使用 ProcessBuilder 运行 Java 主类
- scala - 如何减少 Spark 中的 List[Key, List[Name, Value]]?
- c++ - GCC 原生矩阵运算库