[Firebase][swift] Facebook Authentication実装手順

Firebase[swift]のFacebook認証連携でハマったのでメモ

FirebaseとFacebookを行き来するので注意

 

1.[facebook] https://developers.facebook.com/
でアプリ登録。アプリ名はiOSのアプリのバンドル名と同じにしておいた方がよいかも

2.[facebook] iOSスタートアップでConfigure your info.plist欄にある文字列をすべてコピーしてxcode上のinfo.plistを右クリック→ソースで開く→<dict>…</dict>の間にペースト。アプリのバンドルIDも登録

3.[facebook] 設定タブ→アプリIDとapp secretを控える

4.[Firebase] アプリを登録

5.[Firebase] Auth→ログイン方法でFacebook認証をONにする

6.[Firebase] Facebook欄の「アプリケーション ID」「アプリ シークレット」に先ほどFacebookから控えたアプリIDとapp secretをそれぞれ入力

7.[Firebase] Facebook欄のOAuth リダイレクト URIをコピー

8.[facebook] 左ペインのプロダクト→Facebookログインを追加、「有効なOAuthリダイレクトURI」欄に先ほどのOAuth リダイレクト URIをペースト

9.[Firebase] 左ペイン上部の歯車→設定からGoogleService-Info.plistをダウンロード

10.xcodeのプロジェクトのプロジェクトファイルと同じ場所に「Podfile」を作成、以下の設定を追加する

pod 'Firebase/Auth'
pod 'FBSDKLoginKit'

target '****projectName****' do
end
target '****projectName****Tests' do 
end

****projectName****はそれぞれのプロジェクト名

11.コンソールを起動させ、先ほどのpodFileのある場所まで移動、pod installコマンドでpodをインストール

12.xcodeを一度閉じ、workspaceファイルができているので、workspaceファイルを開く

AppDelegate.swiftに以下を追加

import Firebase
import FBSDKCoreKit
import FBSDKLoginKit

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        FIRApp.configure()
        
        FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
        
        return true
    }

    
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
    }

ViewController.swift(ログインを実装したいページ)に以下を追加、@IBActionはstoryboardでボタンなどに関連づけしておく

import Firebase
import FBSDKCoreKit
import FBSDKLoginKit

@IBAction func facebookLogin (sender: AnyObject){
        let facebookLogin = FBSDKLoginManager()
        print("Logging In")
        facebookLogin.logInWithReadPermissions(["email"], fromViewController: self, handler:{(facebookResult, facebookError) -> Void in
            if facebookError != nil { print("Facebook login failed. Error \(facebookError)")
            } else if facebookResult.isCancelled { print("Facebook login was cancelled.")
            } else {
                let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)
                
                FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
                    print(error);
                    return
                }
                print("Firebase Registration Success");
                //あとは、その後の実装
            
            }
        });
    }

    //サインアウト用
    @IBAction func didTapSignOut(sender: AnyObject) {
        // [START signout]
        let firebaseAuth = FIRAuth.auth()
        do {
            try firebaseAuth?.signOut()
            print ("Signing out Success")
        } catch let signOutError as NSError {
            print ("Error signing out: %@", signOutError)
        }
        // [END signout]
    }

以上

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です