android - Firebase 身份验证与 GoogleAccountCredetial

标签 android firebase firebase-realtime-database firebase-authentication google-authentication

我有一个 Android 应用程序,可以使用 GoogleAccountCredential 使用谷歌帐户登录,允许我进行通信,例如与谷歌电子表格 API。 见https://developers.google.com/sheets/api/quickstart/android

现在我想添加与 Firebase 数据库 通信的功能,我想知道是否有任何方法可以仅通过一种登录方法来实现。见https://firebase.google.com/docs/auth/android/google-signin

哪个更好?我需要两者吗?用户是否两次看到“谷歌登录对话框”?我能以某种方式将一些 auth-objects 重用到其他方法吗?

最佳答案

这是一篇旧文章,但我有一些应用可以做到这一点;专门登录到 firebase,然后设置凭据以使用 api 创建和写入 google 表格。此代码假定您已在 android 项目和开发人员控制台中正确设置了 oauth。您也可以在那里为工作表启用 API。

完成后,从 firebase 控制台获取 google-services.json 并将其放入您的 android 项目中。

private static final String[] SCOPES = 
{SheetsScopes.SPREADSHEETS, SheetsScopes.DRIVE_FILE};

// used for spreadsheet access only
    mCredential = GoogleAccountCredential.usingOAuth2(
            getApplicationContext(),Arrays.asList(SCOPES));


// set exponential backoff policy
    mCredential.setBackOff(new ExponentialBackOff());

   setCredentailAccount();


private void setCredentailAccount() {

    if (mFirebaseUser != null) {
        mCredential.setSelectedAccount(
                new 
Account(mFirebaseUser.getEmail(),getPackageName()));

        Log.i(TAG, "getAcctPermission - account set");
    } else {
        Log.i(TAG, "getAcctPermission - account not set");
    }
}

我还实现了一个单独的登录 Activity ,它封装了应用程序的登录。有很多用于 firebase 登录的代码示例。 Google 凭据是传递到任务中以执行电子表格内容的内容。此外,Api 控制台上的 oauth 屏幕具有需要添加的工作表的凭据。

关于android - Firebase 身份验证与 GoogleAccountCredetial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43878337/

相关文章:

android - 从 Activity 向屏幕打印一个整数

firebase - Firestore : Query documents by property of object

java - 异步任务 onPost 抛出异常

android - Firebase [Android] 从数据库获取列表到 map ?

android - 防止删除数据库或清除应用程序的共享首选项

android - 1GB RAM 的 iPhone 为何与 2GB RAM 的 Android 手机具有相似的性能

android - 在 notifyDataSetChanged 之后焦点发生变化之前,ListView 不会显示变化

node.js - Firestore for Node.js 最终会转向 Web 中使用的新模块化 v9 吗?

javascript - 检索嵌套对象 JavaScript

android - 我在 FirebaseRecyclerAdapter 类中找不到 populateViewHolder 方法