firebase - 如何将 LINE 登录集成到 Firebase Auth 中

标签 firebase flutter firebase-authentication

我做了一些关于使用 Flutter 将 LINE 登录与 Firebase Auth 集成的研究和实验。我有一些问题:

  1. 貌似在Firebase Auth中,有AuthProvider,而在Flutter源代码中,我还发现了一个OAuthProvider。您可以在此处创建Credential 以包含您的 idToken 和访问 token 。但我不知道如何在该 Credential 中指定 providerId。我想这是不可能的,因为Firebase还没有集成LINE登录。客户端 api:logInWithCredential 只能使用 Firebase 支持的登录方法,并且您必须在 Firebase 控制台中启用它们。我说得对吗?

  2. 所以看来现在我必须设置自己的服务器来将 LINE 访问 token 交换为 Firebase 自定义 token 。在我的服务器中,我首先验证访问 token 并获取 LINE 用户配置文件,然后创建一个自定义 token ,但我必须决定一个 UID,我必须使用一些模式,例如 LINE:${LINE_UID}。这看起来像是黑客行为,有更好的方法吗?

  3. 用于创建自定义 token 的管理 API 仅接受 UID 或可选的用户声明,我无法设置其显示名称或其他一些基本信息。因此,如果我直接将具有 UID(如 LINE:${LINE_UID})的 token 发送到客户端,那么客户端 logInWithToken 会创建一个没有显示名称的用户(如果不这样做)不存在。我可以想象的唯一解决方法是,在服务器端生成 LINE:${LINE_UID} 并在 Admin API 中查找它,如果它不存在,那么我使用以下命令创建一个用户正确的显示名称。这看起来又不太好,因为文档说如果你这样做 logInWithToken,如果它不存在,它会创建一个,我们不能使用它,因为我想在创建它时设置它的显示名称。还有更好的解决方案吗?

  4. 我想将用户与多个身份验证提供商链接。我在 Firebase JWT 中看到,它们被很好地包含在内,这很酷。但这些链接的元素是通过凭据获取的用户配置文件。那么我们可以将用户链接到 LINE 登录吗?哪个不是内置的 Firebase Auth Provider?身份验证提供商链接仅对 Firebase 内置提供商有效吗?

问候, 翔。

最佳答案

您在一篇文章中提出的要求太多,这使得我们很难提供帮助。我将尝试在下面解决,但请遵循 How do I ask a good question 上的建议继续前进。

此博文中显示了将 LINE 添加为身份验证提供程序的一般方法:Authenticate your Firebase users with LINE Login 。还有一个example ,其中展示了如何使用 Cloud Functions 作为服务器组件。如果您在 Flutter 的实现中遇到困难,请发布 minimal, complete/standalone code that reproduces this issue .

  1. The client side api: logInWithCredential can ONLY work with Firebase supported login methods, and you have to enable them in your Firebase console. Am I right?

不,你错了。您还可以provide your own sign-in provider对于 Firebase,并使用您在 Firebase 身份验证 SDK 中创建的 token 。

  1. This looks like some hacking, is there a better way?

UID 可以是您想要的任何内容,但您必须确保它是唯一的。确保全局唯一性的一种常见方法是在 UID 中嵌入提供商的某些标识符。如果您更喜欢其他方式来确保全局唯一性,当然您也可以自由使用。

  1. I have no way to set its display name or some other basic info [when creating the account]

这确实是某些提供商的常见问题,例如,在创建帐户之后之前,您无法设置电子邮件+密码提供商的显示名称。通过自定义提供程序,您可以将所需的任何信息放入初始 JWT 中。

  1. can we link a user to a LINE login? Which is not built-in Firebase Auth Provider?

参见Linking custom auth provider with Firebase

关于firebase - 如何将 LINE 登录集成到 Firebase Auth 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60449729/

相关文章:

firebase - 如何对使用 "push()"创建的 Firebase key 进行排序?

node.js - 如何在 Firebase 可调用云函数上抛出错误?

android - Firebase 位置查询

dart - Flutter Navigator.of(context).pop 与 Navigator.pop(context) 区别

ios - Flutter:让 Podfile 工作

iOS 应用程序在使用 Firebase 进行身份验证时崩溃

logging - 将时间戳存储为 Firebase 中的键?

dart - 使用列时如何在步进器中使用扩展

javascript - 火力地堡、Auth0、 react 。自定义 token 格式不正确。请检查文档

java - 使用 google 的 Firebase UI 身份验证失败并显示消息(代码 :10 message:10)