Help us understand the problem. What is going on with this article?

Swift Firebase 匿名認証(anonymously Authentication)

概要

  • iOSアプリを開発している
  • Firebaseを使いたい
  • ユーザーを識別したい
  • 気軽に利用できるアプリにしたい
  • 無駄にセキュリティ情報を保持したくない(メールアドレスは管理したくない)

説明

現在開発中のアプリ(クイズのオンライン対戦)でユーザーの識別が必要となりました。
概要のとおり、個人アプリを開発時に良くあるケースですが、
Qiitaなどでサンプルコードがすぐに見つからないので共有しておきます。
(Firebase Storageによる画像の登録は次回共有します)

要件

  • アプリ起動時に匿名認証する
    • ユーザーが存在する場合
      • NavigationBarにユーザーが設定したアイコンとニックネームを表示
    • ユーザーが存在しない場合
      • NavigationBarにdefaultアイコンとニックネーム(未設定)を表示

結果

サンプルコード

import UIKit
import Firebase

class TopViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        signInAnonymously()
    }

    private func signInAnonymously() {
        Auth.auth().signInAnonymously { [weak self] (authResult, error) in
            guard let user = authResult?.user else { return }
            self?.configureNavigationBar(user: user)
        }
    }

    private func configureNavigationBar(user: User) {
        let nickName = user.displayName ?? "未設定"
        let button = UIButton(type: .system)
        button.setTitle(" \(nickName)", for: .normal)
        button.setTitleColor(UIColor.black, for: .normal)
        button.contentMode = .scaleAspectFit
        button.imageView?.layer.cornerRadius = 20
        button.imageView?.layer.borderWidth = 0.5
        button.imageView?.layer.borderColor = UIColor.lightGray.cgColor
        button.imageView?.clipsToBounds = true
        let imageRef = Storage.storage().reference().child("images/\(user.uid).jpg")
        imageRef.getData(maxSize: 1024 * 1024) { [weak self] data, error in
            guard let self = self else { return }
            let image: UIImage?
            if let _ = error {
                image = UIImage(named: "default")
            } else {
                image = UIImage(data: data!)?.reSizeImage(reSize: CGSize(width: 40, height: 40))
            }
            button.setImage(image?.withRenderingMode(.alwaysOriginal), for: .normal)
            self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)
        }
    }
}


menomoto
AppStoreに開発したアプリを公開しています。 もし興味があればインストール&レビューして頂けると嬉しいです🐶 https://apps.apple.com/jp/developer/mitsunobu-enomoto/id1407773401
https://apps.apple.com/jp/developer/mitsunobu-enomoto/id1407773401
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした