[swift-users] Class Variable delayed stored
jason bronson
jasonbronson at gmail.com
Mon Oct 3 17:46:49 CDT 2016
I have this class I wrote which stores the error messages from the
firebaseauth if a error occurs.
The problem is that the variable on first return is not set and on second
return is.
variable _errorMsg is empty on first return of method registerUser
Why is it not storing the variable when it's initially triggered?
//
// Authentication.swift
import Firebase
import FirebaseAuth
import FBSDKCoreKit
import FBSDKLoginKit
class Authentication: UIViewController {
public var _errorMsg: String = ""
private var createdUser: Bool!
private var _userSignedIn = false
/**
* Registers a user using email/password method
*/
func registerUser(email : String, password: String) -> Bool{
createdUser = false
FIRAuth.auth()?.createUser(withEmail: email, password: password,
completion: {(user, error) in
if error != nil {
if let errCode = FIRAuthErrorCode(rawValue: (error?._code)!)
{
switch errCode {
case FIRAuthErrorCode.errorCodeInvalidEmail:
self._errorMsg = "Invalid Email"
print("DEBUG: invalid email")
case FIRAuthErrorCode.errorCodeEmailAlreadyInUse:
self._errorMsg = "Email already in use"
print("DEBUG: in use")
case FIRAuthErrorCode.errorCodeWeakPassword:
self._errorMsg = "Enter a stronger password"
print("DEBUG: stronger password")
default:
print("DEBUG: Create User Error: ")
self._errorMsg = "Unknown Error "
}
}
print("DEBUG: New user failed to create")
}else{
print("DEBUG: New user created ")
self.createdUser = true
}
})
return self.createdUser
}
/**
* Registers a user using facebook login method
*/
func facebookLogin() -> Bool{
let facebookLogin = FBSDKLoginManager()
facebookLogin.logIn(withReadPermissions: ["email"], from: self){
(result, error) in
if error != nil {
print("DEBUG: Unable to authenticate with Facebook \(error)"
)
}else if result?.isCancelled == true {
print("DEBUG: User cancelled authenticate with Facebook \(
error)")
}else {
print("DEBUG: User success")
let credential =
FIRFacebookAuthProvider.credential(withAccessToken:
FBSDKAccessToken.current().tokenString)
self.firebaseAuth(credential)
}
}
return _userSignedIn
}
/**
* Authentication through firebase
* @parameter credential
*/
func firebaseAuth(_ credential: FIRAuthCredential){
FIRAuth.auth()?.signIn(with: credential, completion: {(user, error)
in
if error != nil {
print("DEBUG: Failed auth with Firebase \(error)")
self._userSignedIn = false
}else{
print("DEBUG: Success auth with Firebase")
self._userSignedIn = true
}
})
}
/**
* Checks if the user is already signed in and sets the variable.
*/
func signedIn() -> Bool {
if ((FIRAuth.auth()?.currentUser) != nil) {
print("DEBUG: user is signed in")
_userSignedIn = true
}
return _userSignedIn
}
/**
* Stores the error messages for authentication issues
*/
var errorMsg: String {
get{
return _errorMsg
}
set(value){
_errorMsg = value
}
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161003/afdb00c4/attachment.html>
More information about the swift-users
mailing list