我在我的应用程序中实现了 Firebase 身份验证,使用 Google 提供程序和“https://www.googleapis.com/auth/drive.appdata”范围,因此我的应用程序可以访问其在 Google 云端硬盘中的应用程序文件夹
这部分工作正常,我在身份验证完成后检索 FireBaseUser 我现在想做的是访问我在 Google Drive 上的应用存储,但我不知道如何使用当前身份验证的结果来执行此操作
但这在 Android 上不起作用。 主要问题是如何创建 Credentials 对象 您是否知道如何初始化 Drive.Builder 实例以便我可以写入/读取应用程序 Google Drive 文件夹?
谢谢
最佳答案
这不能直接完成,因为 Firebase 和 Google 登录名不同,即使使用 Google 帐户登录到 Firebase 也是如此。同时在 Android 上只有“最后登录的 Google 帐户”可用于用户的驱动器(设备上的那个,与 Firebase 身份验证无关,Google 只能用作“身份验证提供者”)。
所以通常有两种选择可供您选择:
授予 GCP 服务帐户访问 Drive API 的权限并使用 Cloud Functions访问它。
改为使用 Cloud Storage ,属于 Firebase 生态系统,类似于 Drive。
我还可以想到一种组合解决方案,用户可以使用云存储(连同 Firebase 身份验证)并拥有一个使用服务帐户的云功能,例如。将上传的文件复制或移动到您的驱动器的文件夹中。
关于那个(显然是服务器端的)Java 示例,credentials.json
清楚地暗示了一个服务帐户……而这正是您可以从中获取此文件的地方。然而,对于 Android 来说,这是非常无用的——因为它具有重大的安全隐患,将服务帐户凭据打包在一个易于反编译的包中并在 WWW 上分发(给所有人)。 Google Play 商店可能不允许您发布甚至上传该内容,因为存在安全检查。在最好的情况下,您只能将该代码部署为 App Engine 模块,而不是部署为 Android 模块。
很抱歉打破了您的幻想,并且无法为 500 个虚构的互联网点提供现成的解决方案,这些点无需支付任何费用 - 但至少我可以说出技术上可行的和不可行的 - 这实际上可能为您节省大量时间,尝试完成不可能的事情。
关于firebase - 如何使用 FireBase Auth UI 从 Android 应用程序使用 Google Drive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869840/