在 Firebase 身份验证后访问用户谷歌表格

rot*_*has 5 java android firebase-authentication google-sheets-api

我有一个通过 Firebase 平台管理用户的 android 应用程序(使用谷歌帐户登录)。成功登录后,我有一个 FirebaseAuth 实例,从中我可以访问 FirebaseUser 实例。

现在我想访问登录用户 Google Sheets 并操作它们(读取、写入、创建一个新的)。我怎样才能做到这一点?

伪代码:

FirebaseAuth mAuth; 

.....
// sign-in with google...
.....

if(mAuth.getCurrentUser() != null){
        // Here for example I want to read the titles of all this user sheets
}
Run Code Online (Sandbox Code Playgroud)

我读了这个线程,但仍然不明白如何使用我的 FirebaseUser 来访问 SheetsAPI。我不需要实际读取或编写工作表的代码,只需要如何创建com.google.api.services.sheets.v4.Sheets实例。

我将所需的依赖项添加到 build.gradle 并从 Google API 控制台获得了clientIDclientsecret,但我不知道如何使用它们。

编辑:

我也阅读了这个线程,但它对我没有帮助,因为我不使用 GoogleSignIn。这是我的身份验证过程的一个片段:

// create the intent for sign in

// in MainActivity
 startActivityForResult(
                viewModel.generateAuthenticationIntent(),
                RC_SIGN_IN);

// in viewModel:

    public Intent generateAuthenticationIntent() {
        List<AuthUI.IdpConfig> providers = Arrays.asList(
                new AuthUI.IdpConfig.EmailBuilder().build(),
                new AuthUI.IdpConfig.GoogleBuilder().build());
        return AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setIsSmartLockEnabled(false)
                .build();
    }

// MainActivity:

   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            IdpResponse response = IdpResponse.fromResultIntent(data);

            if (resultCode == RESULT_OK) {
                // Successfully signed in
                viewModel.authenticate();
                createHome();
            } else {
                Log.d(
                        TAG,
                        String.format(
                                "%s\n"+
                                        "response.getError().getErrorCode()=%d\n"+
                                        "response.getError().getMessage()=%s"
                                ,
                                response.getError().getErrorCode(),
                                response.getError().getMessage()
                        )
                );
            }
        }
    }

Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

Mar*_*ler 1

这个问题很荒谬,因为使用谷歌作为身份验证提供商并不意味着人们实际上登录了谷歌。这不起作用,您需要登录 Google 帐户才能访问任何内容。