Google 로그인 페이지에서 내 첫 번째보기에 로그인 버튼을 클릭하면 Google 웹뷰 페이지가 표시됩니다. 액세스하려면 segue를 사용하여 performe를 사용하고 나 자신을 로그하고 내 데이터를 가져올 수 있습니다. 두 번째보기. 두 번째보기에서 로그 아웃하려고하면 "데코"문자열이 출력되고 첫 페이지로 돌아갑니다. 나는 다시 자신을 로그온 할 때, 그는이 오류와 충돌 : AppDelegate가 응답을 보내십시오 swift3
내가 로그 아웃 기능이 작동하지 않았다고 생각하고, 또한 내가 AppDelegate에에 SEGUE에 대한 사용 performe을 생각하지 않는 것이 가장 좋은 메도입니다 , 너는 다른걸로 만들어? 만 변화가 GIDSignIn.sharedInstance 인 내가 같은 일이 내 두 번째 관점에서Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'uiDelegate must either be a |UIViewController| or implement the |signIn:presentViewController:| and |signIn:dismissViewController:| methods from |GIDSignInUIDelegate|.'
내 firstViewController
class ViewController: UIViewController, GIDSignInUIDelegate{
override func viewDidLoad() {
super.viewDidLoad()
GIDSignIn.sharedInstance().uiDelegate = self
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func btn(_ sender: Any) {
GIDSignIn.sharedInstance().signIn()
}}
을 (알림 기대)(). 분리를()
내 AppDelegate에 포함
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
var configureError : NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
if (configureError != nil)
{
print("We have an error ! \(configureError)")
}
else
{
print("Google ready sir !")
}
GIDSignIn.sharedInstance().delegate = self
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 (error == nil) {
// Perform any operations on signed in user here.
let userId = user.userID // For client-side use only!
let idToken = user.authentication.accessToken // Safe to send to the server
let fullName = user.profile.name
let givenName = user.profile.givenName
let familyName = user.profile.familyName
let email = user.profile.email
print("userId =>\(userId)")
print("idToken =>\(idToken)")
print("fullName =>\(fullName)")
print(" familyName=>\(familyName)")
print(" givenName=>\(givenName)")
print("email =>\(email)")
print("info => \(user.authentication)")
guard let rvc = self.window?.rootViewController as? ViewController
else {
return
}
rvc.performSegue(withIdentifier: "test", sender: nil)
} else {
print("\(error.localizedDescription)")
}
}
func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!)
{
print("Deco")
}
// Other func not usefull
}
()를 내보기 컨트롤러에 uiDelegate = 자기, 내가 같은 메시지와 함께 충돌을 얻었다을, 하지만 나는 한 번도 기록 할 수 없다. –