【问题标题】:Firebase Authentication - Open Sourcing Android AppFirebase 身份验证 - 开源 Android 应用
【发布时间】:2019-12-05 17:52:09
【问题描述】:

有没有办法让Firebase Authentication 在开源应用程序中工作而无需SHA-1 密钥?

我为Coinverse 开源了Android code,这是第一个用于移动音频广播的加密货币新闻应用程序,以分享Android 最佳实践和架构。目标是让开发人员从 Android Studio 运行反编译的应用程序并登录。

我已经为 Firestore 数据库、存储、YouTube API 等进行了以下操作,以便开发人员从 GitHub 下载项目按预期工作:

【问题讨论】:

  • 开源代码是一回事,但听起来您也希望所有贡献者都使用同一个 Firebase 项目。我理解正确吗?这是很不寻常的。更常见的做法是让贡献者使用他们自己的 Firebase 项目进行自己的开发,然后使用您自己的非共享 Firebase 项目进行发布。这不适用于您的用例吗?
  • @FrankvanPuffelen - 有两个 非共享 Firebase 项目用于 stagingproduction 用于发布。还有第三个共享项目为开源代码提供数据和功能。为了让应用程序正常工作,Firestore 中有一个共享数据源,Storage 中有 .txt 文件,还有一个将 .txt 文件转换为 .mp3 的云函数s。您的评论为我提供了以下建议的混合方法来创建一个共享项目,该项目提供对后端数据和云函数的访问,而不暴露后端代码,并允许用户自行进行身份验证。

标签: android firebase authentication firebase-authentication


【解决方案1】:

共享和私有 Firebase 实例

策略 - 创建一个开源 共享 Firebase 实例以提供对共享数据和云函数的访问,并让开发者下载GitHub 项目通过 google-services.json 文件创建自己的 private Firebase 实例进行身份验证,用作默认实例。

专业提示 - 确保为每个需要它的 Firebase 项目标识一个唯一的 SHA-1 密钥,否则会出现身份验证错误 outlined here

共享 Firebase 项目

  • 使用Use multiple projects in your application 编程实现初始化共享的开源 Firebase 项目(将项目与非共享的staging生产 项目分开用于发布)。 - FirebaseApp.getInstance("openSourceProject") 注意setProjectId(...) 也需要为 FirebaseOptions 设置,尽管在上面的链接和任何其他使用的服务(例如存储)中没有提到。
  • 使用来自共享 Firestore 项目的公共内容和价格数据填充应用程序 - FirebaseFirestore.getInstance(FirebaseApp.getInstance("openSourceProject"))
  • 使用共享的 Cloud Functions 和 Firebase Storage 从 Storage .txt 文件创建 .mp3 文件并从 Storage 访问 .mp3s。 - FirebaseStorage.getInstance(FirebaseApp.getInstance("openSourceProject"))FirebaseFunctions.getInstance(FirebaseApp.getInstance("openSourceProject"))

用户的私有 Firebase 项目

  • 通过 google-services.json 文件初始化为默认 Firebase 项目实例。
  • 使用SHA-1 密钥进行身份验证
  • 将登录的用户数据保存到他们的 Firestore 实例 - FirebaseFirestore.getInstance()
  • delete user functionality 创建一个 Firebase 令牌

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2019-05-07
    • 2016-10-22
    • 2019-03-09
    • 2017-11-08
    相关资源
    最近更新 更多