Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

カスタム認証システムを使用して、AppleプラットフォームでFirebaseを使用して認証する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。
ユーザーが正常にサインインしたときにカスタムの署名付きトークンを生成するように認証サーバーを変更することで、Firebase Authentication をカスタム認証システムと統合できます。アプリはこのトークンを受け取り、それを使用して Firebase で認証します。

あなたが始める前に

Swift Package Manager を使用して、Firebase の依存関係をインストールおよび管理します。

  1. Xcode で、アプリ プロジェクトを開いた状態で、 File > Add Packagesに移動します。
  2. プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Firebase Authentication ライブラリを選択します。
  5. 完了すると、Xcode はバックグラウンドで依存関係の解決とダウンロードを自動的に開始します。

次に、いくつかの構成手順を実行します。

  1. プロジェクトのサーバー キーを取得します。
    1. プロジェクトの設定で [サービス アカウント]ページに移動します。
    2. [ Service Accounts]ページの [ Firebase Admin SDK ] セクションの下部にある [ Generate New Private Key ] をクリックします。
    3. 新しいサービス アカウントの公開鍵と秘密鍵のペアは、コンピューターに自動的に保存されます。このファイルを認証サーバーにコピーします。

Firebase で認証する

  1. UIApplicationDelegateFirebaseCoreモジュールをインポートし、アプリ デリゲートが使用する他のすべてのFirebase モジュールをインポートします。たとえば、Cloud Firestore と認証を使用するには:

    迅速

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. アプリ デリゲートのapplication(_:didFinishLaunchingWithOptions:)メソッドでFirebaseApp共有インスタンスを構成します。

    迅速

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. ユーザーがアプリにサインインするときに、サインイン資格情報 (ユーザー名とパスワードなど) を認証サーバーに送信します。サーバーは資格情報を確認し、有効な場合はカスタム トークンを返します。
  4. 認証サーバーからカスタム トークンを受け取ったら、それをsignInWithCustomTokenに渡してユーザーをサインインさせます。

    迅速

    Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInWithCustomToken:customToken
                               completion:^(FIRAuthDataResult * _Nullable authResult,
                                            NSError * _Nullable error) {
      // ...
    }];

次のステップ

ユーザーが初めてサインインすると、新しいユーザー アカウントが作成され、サインインに使用したユーザーの資格情報 (ユーザー名とパスワード、電話番号、または認証プロバイダー情報) にリンクされます。この新しいアカウントは Firebase プロジェクトの一部として保存され、ユーザーのサインイン方法に関係なく、プロジェクト内のすべてのアプリでユーザーを識別するために使用できます。

  • アプリでは、ユーザーの基本的なプロファイル情報をFIRUserオブジェクトから取得できます。ユーザーの管理を参照してください。

  • Firebase Realtime Database と Cloud Storageセキュリティ ルールでは、サインインしているユーザーの一意のユーザー ID をauth変数から取得し、それを使用してユーザーがアクセスできるデータを制御できます。

認証プロバイダーの資格情報を既存のユーザー アカウントにリンクすることで、ユーザーが複数の認証プロバイダーを使用してアプリにサインインできるようにすることができます。

ユーザーをサインアウトするには、 signOut:を呼び出します。

迅速

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
  

Objective-C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

認証エラーの全範囲に対してエラー処理コードを追加することもできます。エラーの処理を参照してください。