Home > database >  How do I access the variables that google provides outside of the function?
How do I access the variables that google provides outside of the function?

Time:11-16

i'm trying to access the emailAddress variable in a different view controller however its always not in scope.

i want to call something like

login.emailAddress

in a different vc.

heres my code for your refeerence, i understand that there are similar questions however i struggle to translate that into my code. .

import UIKit
import GoogleSignIn

let login = LoginController()

class LoginController: UIViewController {
    
    @IBOutlet weak var signInButton: GIDSignInButton!
    
    let signInConfig = GIDConfiguration(clientID: "12345-abcdef.apps.googleusercontent.com")
    
        @IBAction func signIn(_ sender: Any)  {
            GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in
                guard error == nil else { return }
                guard let user = user else { return }

                var emailAddress = user.profile?.email

                var fullName = user.profile?.name
                var givenName = user.profile?.givenName
                var familyName = user.profile?.familyName

                var profilePicUrl = user.profile?.imageURL(withDimension: 320)
                
                let userProfile = (fullName, givenName, emailAddress, profilePicUrl)

                print("Sign in Sucessfull")
                print(fullName!)
                print(givenName!)
                print(familyName!)
                print(emailAddress!)
                print(profilePicUrl!)
                
                // If sign in succeeded, display the app's main content View.
                
                let vc = self.storyboard?.instantiateViewController(withIdentifier: "NavigationViewController") as! UINavigationController
                self.navigationController?.pushViewController(vc, animated: true)
                self.present(vc, animated: true, completion: nil)
            }
        }
}

CodePudding user response:

An option would be storing the value in a class property:

class LoginController: UIViewController {

@IBOutlet weak var signInButton: GIDSignInButton!
private var userMail: String? 

let signInConfig = GIDConfiguration(clientID: "12345-abcdef.apps.googleusercontent.com")

    @IBAction func signIn(_ sender: Any)  {
        GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in
            guard error == nil else { return }
            guard let user = user else { return }

            self.userMail = user.profile?.email
            [...]
        }
    }

}

  • Related