Firebase认证の基本的な使い方

Firebase身份验证を使いこなすと,かなり楽に高品质な认证プロセスを组めるので,绍介します。

Firebase身份验证| 火力基地

要将用户登录到您的应用程序,您首先需要从该用户获取身份验证凭据。 这些凭证可以是用户…

firebase.google.com

主,iOSアプリ・自前APIにーバーのーの组の合プ替换ですが,それ以外の构成とする场合の参考の。

1.クライアントでFirebase认证の代币取得

认证方法は,以下に対応しています。

  • 谷歌
  • 脸书
  • 推特
  • 的GitHub
  • ルール
  • 电话番号

baseール认证では确认メール送信,电话番号认证は认证ド発ード発行部分までFirebase侧でやってくれて,すごく良くできています👏

また,匿名认证も対応しているので,アプリをインストール・起动するだけでユーザー操作なしでtoken取得することもできます👏

在iOS上使用Firebase匿名进行身份验证| 火力基地

您可以使用Firebase身份验证来创建并使用临时匿名帐户向Firebase进行身份验证。 这些…

firebase.google.com

は,上记记法以外的其他认证方法を提供したい场合も,ちょっと頑張ればできます。

使用自定义身份验证系统在iOS上使用Firebase进行身份验证| 火力基地

用户首次登录后,将创建一个新的用户帐户并将其链接到凭据,即该用户…

firebase.google.com

以下でInstagramアカウントでの认证に対応するやり方が解说されています。同様のやり方で他のサービス対応もできます。

使用Instagram对您的Firebase用户进行身份验证

Firebase身份验证支持开箱即用的四个联合身份提供者,从而使身份验证超级容易。

firebase.googleblog.com

1、1ユーザーに复数のアカウントの认证を纽づけることもできます。

やり方は以下の检索客户的ID令牌に记にいます。

验证ID令牌| 火力基地

当用户或设备成功登录后,Firebase会创建一个相应的ID令牌,以唯一地标识他们…

firebase.google.com

また,この令牌は有效期限が1时间なことに注意です(后述の検证过程で有效期限切れかどうかチェックします)。

FIRUser.getIDToken(completion:)メソッドは,期限切れの场合にリフレッシュされたtokenを受け取れる(そうでない场合は保持しているtokenが返るはず)ので,自前で保持せずに挟むのが良いかなと思っています。

检索Firebase身份验证令牌,如果令牌已过期,则可以刷新它。
https://github.com/firebase/firebase-ios-sdk/blob/5430b776ca6fea34d84dab09db39c51b51e551da/Firebase/Auth/Source/Public/FIRUser.h#L263-L271

2. tokenを授权:Bearerヘッヘ入れてAPIリクエスト

その令牌を授权:Bearerヘッダに入れるなどして自前APIサーバーにリにックストします。

  curl -X“ POST”“ https:// YOUR_API / authenticate” -H“授权:承载YOUR_TOKEN” 

3.サーバー侧でその令牌を検证—验证

でーバー侧で,以下の使用Firebase Admin SDKに记录にいる手顺で,令牌を検证を検来验证ID令牌。

验证ID令牌| 火力基地

当用户或设备成功登录后,Firebase会创建一个相应的ID令牌,以唯一地标识他们…

firebase.google.com

将来,Admin SDKは,现有以下の言语しか用意されていません。(将来的にはもっと増えるかもしれないのでをこちらからチェックしてみてください)。

  • Node.js
  • 爪哇
  • 蟒蛇

将Firebase Admin SDK添加到您的服务器| 火力基地

某些用例要求您同时创建多个应用程序。 例如,您可能想从…读取数据。

firebase.google.com

それ另外の言语の场合は,使用第三方JWT库に记の手顺で自前実装します验证ID令牌。

幸い,JWTライブラリはほとんどの言语にあるので,それを使えばそこまで难しく无いです。

智威汤逊

JSON Web令牌(JWT)是一种紧凑的URL安全方法,用于表示要在两方之间转移的声明。 该…

jwt.io

SwiftPM対応の令牌検证ライブラリは仆の作ったものがこちらにあります💁(JWTライブラリはvapor / jwtを利用しました)
NodeントとNode.js版のソースを见ながら书いたので,きちんとした検证コードになっているはずです。

mono0926 / firebase-verifier

firebase-verifier – Firebase ID令牌验证程序。

github.com

蒸气,レームワークを使っている场合,Project ID记录した设定ファイル置くだけでconfigからFirebaseVerifierインスタンスを取得できる,使いやすい作りになっています(他のフレームワーク使っている场合でも使えますが)。また,有效期限切れのtokenを许容するようなオプション引数も用意してあるので,Debug时は许容して开発しやすくできるようにも工夫しました。

4.検证书结果がOKだったら令牌に包含まれるuser_idから,どのユーザーか识别—认证

令牌をJWTサイトの已编码の栏に粘贴るとデコードされた有效载荷が确认できますが,そこのsubがFirebase身份验证のユーザーIDとなっているので,それを元にユーザーの识别ができます。

  {
   “ iss”:“ https://securetoken.google.com/YOUR_PROJECT_ID”,
   “ provider_id”:“匿名”,
   “ aud”:“ YOUR_PROJECT_ID”,
   “ auth_time”:1501381779,
   “ user_id”:“ USER_ID”,
   “ sub”:“ USER_ID”,
   “ iat”:1501654829,
   “ exp”:1501658429,
   “ firebase”:{
     “身份”:{},
     “ sign_in_provider”:“匿名”
   }
 } 

ここで,通常そのFirebaseのユーザーIDに纽づいたレコードを生成・参照することになりますが,特に匿名认证対応する场合は,IDはのフィールドをほぼ持たないテーブルを别途1つ用意するのが良いと思っています。

5.认证状态(匿名か登录済みかなど)—授权

また, provider_id firebase/identities ,Firebase身份验证にてどういう认证方法がなされたかが分かります。

これを元に,「このAPIは匿名认证はNGで登录が必要」のようなふるい分けができます。

仆の作ったFirebaseVerifierはこれにも対応しています🙆


个人,的,はFirebaseは数年はサービス続くのは间违いないと踏んでいるので,积极的にロックインされにいってます🏃