티스토리 뷰


[iOS/swift] Google Sign In 연동하기 #1 (API 다운로드 및 설정)


구글 로그인은 나의 앱에서 구글로 사용자 인증을 요청하고 구글에서 인증이 완료되면 나의 앱으로 인증이 정상적으로 되었다고 알려주는 형식이다. 


그래서 나의 앱에서 구글 로그인 버튼을 눌렀을때 구글로 로그인 요청을 보내고, 

구글에서 로그인 요청이 종료되었을때 나의 앱에서 해달 URL에 대한 처리를 해주어야 한다. 


로그인 버튼을 만들기 전에 구글 사용자 인증이 완료되고 난 후의 URL 처리하는 과정을 먼저 구현한다.


1. 구글에서 로그인을 완료하고 보낸 URL을 처리하기 위해 나의 App Delegate 파일에 application:openURL:options: 함수를 구현한다. 여기서는 GIDSignIn 객체의 handleURL 함수를 호출해 주면 끝이다. (나의 경우 구글 문서에서 사용하는 버전과 달라서 그런지 handleURL 함수가 없어서  GIDSignIn.sharedInstance() 객체 안의 handle 함수를 호출해 주었다. )

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {

        return GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)

}


 2. 이후 로그인이 성공했을 경우 실행되는 함수와 연결이 끊겼을 경우 실행되는 함수를 App Delegate 파일에 구현해 주면 로그인에 사용되는 함수 구현은 끝난다. 여기서도 버전이 달라서 함수명이 약간씩 구글 문서와 달랐음.

func sign(_ signIn: GIDSignIn!,

didSignInFor user: GIDGoogleUser!, withError error: Error!) {

// 로그인 성공

        if(error != nil){

            print("Sign-in Error \(error)")

        } else {

            print("Sign-in Success \(user.profile.email)")

            

        }

    }

    

func sign(_ signIn: GIDSignIn!,     didDisconnectWithuser: GIDGoogleUser!, withError error: Error!) {

        // 연결이 끊기면 실행되는 함수

        if(error != nil){

            print("didDisconnectWith \(error)")

        } else {

            print("didDisconnectWith \(user.profile.email)")

        }

    }

        

3. uiDelegate set 해주기:  ViewController 파일에 GIDSignInUIDelegate를 정의 해 준다. 그리고 viewDidLoad 함수 안에서 GIDSignIn 객체에 uiDelegate를 set 해준다. 이때 ViewController 클래스는 UIViewController의 sub class여야 한다.
class ViewController: UIViewController, GIDSignInUIDelegate {

override func viewDidLoad() {
 
super.viewDidLoad()
 
GIDSignIn.sharedInstance().uiDelegate = self
}


4.  Sign-In Button 만들기: MainStoryboard로 이동하여 View를 이용해 위치를 잡아 준다. 

회색으로 Sign Out 위에 부분이 view로 된 부분이다. 그리고 View의 속성의 Custom class를 GIDSignInButton로 해주면 끝이 난다. 





실행 화면


로그인을 누를 경우 다이얼로그를 통해서 구글 로그인 창이 보이고 로그인을 진행 할 수 있다. 

로그인이 되어 있을 경우 추가적인 행동이 일어나지 않는다.

로그아웃 버튼은 버튼을 만든 후 다음 함수를 연결해 주면 된다.

@IBAction func didTapSignOut(sender: AnyObject) {
 
GIDSignIn.sharedInstance().signOut()
}





댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함