Firebase + auth0 身份验证

Firebase + auth0 authentication

我正在开发 objective-c iOS 应用程序。我想使用 auth0 进行身份验证 ( https://auth0.com/ ) 并且我想使用 Firebase 作为数据库后端。

我已经阅读了所有的 auth0 文档,并且我已经为以下项目进行了身份验证:

Facebook,Google+,推特,自行注册。

问题: 在我需要将身份验证模型与 Firebase 集成时,文档有点脱落,它给了我这一页,我不确定现在要做什么。以前有没有人做过这种整合,你能带我走这条路吗?我有点陌生。

BlockquoteConfiguring Token content

与仪表板中注册的任何其他 API 一样,Auth0 将通过委托端点颁发 Firebase 令牌。这允许您用一个令牌交换另一个令牌。

Firebase 令牌的内容是按照惯例生成的,复制委托调用中使用的输入令牌中 firebase_data 属性下包含的所有属性。

您可以使用规则轻松生成这些:

user.firebase_data = {
  user_id: new Buffer(user.email).toString('base64'),
  company: !user.isSocial ? context.connection.replace(/\./g, '-') : null,
  foo: 'bar'
};

在上面的示例中,user_id 和 company 这两个属性将在调用委托端点后生成,并且都可供 Firebase 使用。

Blockquote

我在浏览器中为 Javascript 完成了此操作,而不是 ios/Objective C。但在概念上,您需要做四件事:

设置

  1. 配置您的 Auth0 帐户以允许 Firebase 委派,并提供您的 Firebase 令牌。这部分在 Firebase 选项卡上 Auth0's ios/objective C docs for Firebase 涵盖。
  2. (可选)创建 Auth0 规则以设置委托的 Firebase 令牌的属性。你在上面的代码片段中有这个。

用于设置 Firebase 令牌属性的 Auth0 规则:

user.firebase_data = {
  user_id: new Buffer(user.email).toString('base64'),
  company: !user.isSocial ? context.connection.replace(/\./g, '-') : null,
  foo: 'bar'
};

您在此处设置的属性将在 Firebase 安全规则中可用。

身份验证流程

Auth0 has a swift sample 这似乎对您有帮助。你需要做两件事:

  1. 用户身份验证成功后,从 Auth0 发出第二个 Auth0 请求以获取委托的 Firebase 访问令牌,请参阅 sample line 65
  2. 通过其 authWithCustomToken 方法将新的委托令牌与 Firebase 对象一起使用,请参阅 sample line 73