10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firebaseのmail/pass認証機能をiOSで使う

Posted at

#メルアドとパスワードを入力してユーザーを作る/ログインするのfirebaseで作ってみました

シングルページプロジェクトを作っておいてください
認証用のfirebaseのプロジェクトも作っておいてください
導入部分も書いてあります

#まずfirebaseをiosアプリに追加
とりあえずfirebaseのアカウントを作成
googleアカウントを持っていれば一瞬で終わります

新規プロジェクトを作成してiosにアプリにfirebaseを追加を選択
1.png


2.png

ターミナルでアプリケーションのXcodeプロジェクトの場所に移動してください
podfile作成

pod init

vimで編集

vim podfile

pod 'Firebase/Auth'をtargetとendの間に入れる

target 'アプリ名' do
pod 'Firebase'
pod 'Firebase/Auth'
end

インストール

pod install
3.png

インストール完了です
workspaceファイルを開いてください
4.png

#Firebaseのコンソールでメルアド/パスワードの認証設定する
Auth->ログイン方法をクリック

6.png 7.png

設定完了です

#xcodeでプロジェクトを編集していきます

AppDelegate.swift

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        
        FIRApp.configure()
        return true
    }

storyboardは最小限しか使わないタイプです
バックグラウンドをダークグレーにしました

テキストフィールドなどはコードで書いていきますね

ViewController.swift

import UIKit
import Firebase

class ViewController: UIViewController {
    
    var email:UITextField!
    var password:UITextField!
    var signin:UIButton!
    var create:UIButton!
    let BTN_SIGN = 0
    let BTN_C = 1
    
    

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let x = (UIScreen.mainScreen().bounds.size.width-200)/2
        let y = (UIScreen.mainScreen().bounds.size.height+80)/9
        
        email=makeTextField(CGRectMake(x, y, 200, 30), text: "")
        self.view.addSubview(email)
        
        password=makeTextField(CGRectMake(x, y+40, 200, 30), text: "")
        password.secureTextEntry = true
        self.view.addSubview(password)
        
        
        signin=makeButton(CGRectMake(x, y+80, 60, 30), text: "signin", tag: BTN_SIGN)
        signin.addTarget(self, action:#selector(ViewController.onClick(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(signin)
        
        create=makeButton(CGRectMake(x+100, y+80, 60, 30), text: "create", tag: BTN_C)
        create.addTarget(self, action: #selector(ViewController.onClick(_:)), forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(create)
        
    }
    
    func onClick (sender:UIButton){
        if sender.tag == BTN_SIGN {
            
            
            FIRAuth.auth()?.signInWithEmail(email.text!, password: password.text!, completion: { user, error in
                if let error = error {
                    print("サインインできません \(error)")
                    return
                }
                
                if let user = user {
                    print("user : \(user.email!) サインインできました")
                }
            })
            
            
        }else if sender.tag == BTN_C {
            
            FIRAuth.auth()?.createUserWithEmail(email.text!, password: password.text!, completion: { user, error in
                if let error = error {
                    print("ユーザーを作れませんでした \(error)")
                    return
                }
                
                if let user = user {
                    print("user : \(user.email!)ユーザーを作成しました")
                }
            })
            
        }
        
    }
    
    
    func makeTextField(frame:CGRect,text:String)->UITextField{
        let textField = UITextField()
        textField.frame = frame
        textField.text = text
        textField.backgroundColor = UIColor.whiteColor()
        textField.layer.cornerRadius = 8
        textField.clearButtonMode = UITextFieldViewMode.WhileEditing
        
        return textField
    }
    
    func makeButton(frame:CGRect,text:String,tag:Int)->UIButton {
        let button = UIButton(type:UIButtonType.System)
        button.frame = frame
        button.setTitle(text , forState: UIControlState.Normal)
        button.tag = tag
        return button
    }
    

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}


走らせるとこんな感じになります↓

5.png

#入力してユーザーをつくってみます

メールアドレスとパスワードを入力してcreateをタップ
8.png

そうすると
9.png

このままsigninをタップすると
10.png

11.png

同じメールアドレスで登録しようとすると
こんな感じのが出てきます↓
13.png

14.png

#Firebaseのコンソールでも確認できる
15.png

@つけなかったり.なかったりするとエラーになる
パスワードも6文字以下はエラー↓
16.png

17.png
10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?