首页 > 解决方案 > 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();
                    }
                });
    }

标签: androidandroid-studiooauth-2.0google-drive-apigoogle-signin

解决方案


推荐阅读