firebaseのauthenticationについて困っています
初めての投稿で至らぬ点もございますがご了承いただけたら幸いです。
GoogleのFirebaseを使ってログイン機能を実装しており、現在ログインしているユーザーがいる場合の処理(Auth.auth().currentuser != nil {}
)といったものを書いていたところ、まったくcurrentuserがnilになりません。もしかしたらほんとにおバカさんな発言なのかもしれませんが、恥ずかしながら初心者で大真面目です。
グーグルサインインのボタンを押したらサインインしながら画面遷移して、
それ以外のボタンを押したらサインインをしない状態のまま画面遷移という実装をしたいです。
どなたかご教授お願いいたします。
以下コードです。
AppDelegate.swift
import UIKit
import Firebase
import GoogleSignIn
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate,GIDSignInDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
GIDSignIn.sharedInstance().clientID = FirebaseApp.app()!.options.clientID
GIDSignIn.sharedInstance().delegate = self
let user = Auth.auth().currentUser
if user != nil {
user?.delete(completion: nil)
}
// 初回起動のUserDefault群
let defaults = UserDefaults.standard
let HomeDic = ["HomeFirstPop": true]
defaults.register(defaults: HomeDic)
let MapDic = ["MapFirstPop": true]
defaults.register(defaults: MapDic)
let SearchDic = ["SearchFirstPop": true]
defaults.register(defaults: SearchDic)
let RankDic = ["RankFirstPop": true]
defaults.register(defaults: RankDic)
let MypageDic = ["MypageDic": true]
defaults.register(defaults: MypageDic)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return GIDSignIn.sharedInstance().handle(url,sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
let authentication = user.authentication
let credential = GoogleAuthProvider.credential(withIDToken: (authentication?.idToken)!, accessToken: (authentication?.accessToken)!)
Auth.auth().signIn(with: credential, completion: { (user, error) in
print("You could signin with google")
})
}
func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {
print("Sign off successfully")
}
}
SigninViewController
import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase
import GoogleSignIn
class SignInViewController: UIViewController, GIDSignInUIDelegate {
var userRef: DatabaseReference!
let thisUser = ""
override func viewDidLoad() {
super.viewDidLoad()
GIDSignIn.sharedInstance().uiDelegate = self
userRef = Database.database().reference().child("users")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// サインインのときに呼び出されるメソッド。必須メソッド
@IBAction func signinWithGoogle(_ sender: GIDSignInButton) {
GIDSignIn.sharedInstance().signIn()
GIDSignIn.sharedInstance().signIn()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let nextView = storyboard.instantiateViewController(withIdentifier: "nextView") as! UITabBarController
nextView.selectedIndex = 2
self.present(nextView, animated: false, completion: nil)
}
// ログアウトボタンからログイン画面に戻ってくるためのメソッド
@IBAction func backToTop(segue: UIStoryboardSegue) {
GIDSignIn.sharedInstance().signOut()
}
@IBAction func NoSignInButton(_ sender: Any) {
if Auth.auth().currentUser != nil {
print("サインインしてるよ")
print(Auth.auth().currentUser as Any)
} else {
let NextTabbarController = self.storyboard?.instantiateViewController(withIdentifier: "nextView") as! UITabBarController
NextTabbarController.selectedIndex = 2
self.present(NextTabbarController, animated: false, completion: nil)
}
}
}