如何将行登录集成到Firebase Auth中

如何将行登录集成到Firebase Auth中,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,我做了一些关于使用颤振将LINE登录与Firebase Auth集成的研究和实验。我有一些问题: 看起来在Firebase Auth中有AuthProvider,在Flatter源代码中,我还发现了OAuthProvider。在那里,您可以创建凭证以包括您的idToken和access token。但我不知道如何在凭证中指定providerId。我想这是不可能的,因为Firebase没有集成行登录。客户端api:logInWithCredential只能与Firebase支持的登录方法一起使用,

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

看起来在Firebase Auth中有AuthProvider,在Flatter源代码中,我还发现了OAuthProvider。在那里,您可以创建凭证以包括您的idToken和access token。但我不知道如何在凭证中指定providerId。我想这是不可能的,因为Firebase没有集成行登录。客户端api:logInWithCredential只能与Firebase支持的登录方法一起使用,您必须在Firebase控制台中启用它们。我说得对吗

所以现在看来,我必须设置自己的服务器,将线路访问令牌交换到Firebase自定义令牌。在我的服务器中,我首先验证访问令牌并获取行用户配置文件,然后创建一个自定义令牌,但在那里我必须确定一个UID,我必须使用一些模式,如LINE:${LINE\u UID}。这看起来像是黑客攻击,有更好的方法吗

管理员API创建自定义令牌只接受UID或可选的用户声明,我没有办法设置其显示名称或其他一些基本信息。因此,如果我直接向客户端发送带有UID的令牌,比如行:${LINE\u UID},然后客户端登录WithToken,如果它不存在,它将创建一个没有显示名称的用户。我能想到的唯一解决办法是,在服务器端生成一行:${LINE_UID},并在管理API中查找它,如果它不存在,那么我创建一个具有正确显示名称的用户。这看起来也不太好,因为文档说如果您使用logInWithToken,如果它不在那里,它将创建一个,我们不能使用它,因为我想在创建它时设置它的显示名称。有更好的解决办法吗

我想将一个用户链接到多个身份验证提供程序。我在Firebase JWT中看到,它们包含得很好,这很酷。但这些链接元素是通过凭证获取的用户配置文件。那么我们可以将用户链接到在线登录吗?哪个不是内置的Firebase身份验证提供程序?验证提供程序链接是否仅对Firebase内置提供程序有效

问候,,
香。

你有没有检查firebase\u auth插件?它有很多有用的功能

你在一篇帖子里问得太多了,这让你很难得到帮助。我将尝试在下面介绍,但请按照建议继续进行

将行添加为身份验证提供程序的一般方法如本文所示:。还有一个示例,展示了如何使用云函数作为服务器组件。如果您在执行颤振时遇到困难,请发布

客户端api:logInWithCredential只能与Firebase支持的登录方法一起使用,您必须在Firebase控制台中启用它们。我说得对吗? 不,你错了。您还可以使用Firebase,并使用您在Firebase身份验证SDK中铸造的令牌

这看起来像是黑客攻击,有更好的方法吗? UID可以是任何您想要的,但是您必须确保它是唯一的。确保全局唯一性的常用方法是在UID中嵌入提供程序的某些标识符。如果你喜欢另一种方法来确保全局唯一性,当然你也可以自由地使用它

我无法设置其显示名称或其他一些基本信息[创建帐户时] 这确实是一些提供商的常见问题,例如,在创建帐户之前,您无法设置电子邮件+密码提供商的显示名称。使用自定义提供程序,您可以在初始JWT中输入所需的任何信息

我们可以将用户链接到在线登录吗?哪个不是内置的Firebase身份验证提供程序?
请参见

确定我正在使用它。但LINE不受支持,我做了一些实验,但有一些问题我无法通过谷歌搜索找到答案。SignInWithCustomToken:是的,这是我必须使用的方法。我必须使用ADMINAPI在服务器端创建令牌,并且在文档中说,如果自定义令牌中的UID不存在,它将创建该用户帐户,这就是我想要的。但问题之一是,我不能在自定义令牌中包含一些基本信息,例如显示名称。所以我必须在我的服务器端创建用户,并从我用访问令牌获得的线路配置文件中添加一些基本信息。这意味着,这个自动创建帐户的功能不是很有用。还有,你只需要将你的idToken和accessToken包装到一个credential对象中,我想Firebase会为你做OAuth的事情,所以你不需要为此创建服务器。在FlatterFirebase Auth的源代码中,我还发现了一个OAuthProvider,它可以创建这样的凭证,这让我很困惑,也许他们可以处理所有OAuth?Line login支持OAuth2,因此如果可能的话,我甚至不需要创建自己的服务器。如果你在实施这些方面遇到困难
对于颤振,请发布。感谢回复。对于第一个问题,我的意思是,有两种客户端登录方法:logInWithCredential和logInWithCustomToken。所以如果我铸造一个Firebase自定义令牌,这意味着我必须使用logInWithCustomToken,对吗?所以我的问题是,logInWithCredential方法是否只适用于内置提供者?关于问题4,我读了那篇文章,这不是一个完美的解决方法,因为它不会嵌入firebase用户Id令牌。但是谢谢,这给了我另一个我从未想过的想法: