我应该如何为Firebase身份验证创建新的联合身份提供程序

时间:2017-11-21 14:40:16

标签: java android node.js paypal firebase-authentication

我想将PayPal登录集成到Android应用程序中,以便将客户端验证到Firebase数据库。我已经设法在node.js服务器上创建一个自定义函数,该服务器从提供的uid创建标记,以便在客户端应用程序中使用“signin withcustomtoken”函数。我应该通过https将uid发送到nodejs服务器以获取令牌吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

不要创建接受uid的HTTP端点并返回自定义令牌。这是一个巨大的安全漏洞,因为任何攻击者都可以冒充任何知道他们uid的用户。 您需要做的是:

  1. 实施paypal OAuth代码流程。您可以使用第三方库。
  2. 当您获得paypal OAuth授权码时,您将其发送到您的后端,您使用paypal客户端ID和秘密来交换paypal刷新令牌和访问令牌。然后,您可以获得与该PayPal用户相关的用户信息,包括他们的paypal uid。然后,您可以使用Firebase Admin SDK制作Firebase自定义令牌并将其返回给客户端。
  3. 在客户端上,您signInWithCustomToken可以使用该自定义令牌完成登录。
  4. 在这种情况下,您将公开一个HTTP端点,该端点接收授权码并返回Firebase自定义令牌。

    这是基本想法(不包括细节)。当然,你仍然必须通过传递一些状态来确保流程在同一设备上开始和结束,然后检查你最后是否恢复了它。您还必须确保使用应用程序链接等方式将身份验证代码返回到正确的应用程序.Firebase动态链接可以在那里提供帮助。