[swift] Swift에서 키체인을 사용하여 소셜 미디어 로그인 기능 구현하기

소셜 미디어 로그인은 사용자의 편의성을 높이고 앱에 대한 접근성을 개선하기 위해 많이 사용되는 기능입니다. 이 기능을 구현하려면 사용자의 소셜 미디어 계정 정보를 안전하게 저장해야 합니다. Swift에서는 키체인(Keychain)을 사용하여 소셜 미디어 로그인 기능을 구현할 수 있습니다. 키체인은 개인 정보를 안전하게 저장하는 용도로 사용되는 시스템입니다. 이제 더 자세히 알아보도록 하겠습니다.

1. 키체인 라이브러리 가져오기

먼저 프로젝트에 키체인을 사용하기 위한 라이브러리를 가져와야 합니다. Swift에서 키체인을 다룰 수 있는 여러 라이브러리가 있지만, 여기서는 KeychainAccess 라이브러리를 사용하도록 하겠습니다. KeychainAccess는 유명한 키체인 라이브러리로, 사용하기 편리하며 다양한 기능을 제공합니다. KeychainAccess 라이브러리를 이용하기 위해 다음과 같이 Podfile에 라이브러리를 추가합니다.

pod 'KeychainAccess'

저장 후 터미널에서 pod install 명령을 실행하여 라이브러리를 설치합니다.

2. 소셜 미디어 로그인 정보 저장하기

소셜 미디어 로그인 정보를 저장하기 위해 Keychain 클래스의 인스턴스를 생성하고, set(_:forKey:) 메소드로 정보를 저장합니다. 다음 예제는 Facebook 소셜 로그인의 경우를 보여줍니다.

import KeychainAccess

let keychain = Keychain(service: "com.yourapp.facebooklogin")

func saveFacebookLoginInfo(token: String, userId: String) {
    do {
        try keychain.set(token, key: "FacebookToken")
        try keychain.set(userId, key: "FacebookUserId")
    } catch let error {
        print("저장 실패: \(error.localizedDescription)")
    }
}

위의 예제에서 service 파라미터는 앱의 Bundle Identifier나 다른 식별자를 사용할 수 있습니다. set(_:forKey:) 메소드를 사용하여 정보를 키체인에 저장하고, 저장에 실패한 경우 localizedDescription를 통해 에러 메시지를 출력합니다.

3. 소셜 미디어 로그인 정보 가져오기

저장된 소셜 미디어 로그인 정보를 가져오기 위해 get(_:) 메소드를 사용합니다. 아래 예제는 Facebook 로그인 정보를 가져오는 함수입니다.

func getFacebookLoginInfo() -> (token: String?, userId: String?) {
    do {
        let token = try keychain.get("FacebookToken")
        let userId = try keychain.get("FacebookUserId")
        return (token, userId)
    } catch let error {
        print("가져오기 실패: \(error.localizedDescription)")
        return (nil, nil)
    }
}

get(_:) 메소드를 통해 로그인 정보를 가져온 후, 가져오기에 실패한 경우 localizedDescription를 통해 에러 메시지를 출력합니다.

4. 소셜 미디어 로그인 정보 삭제하기

remove(_:forKey:) 메소드를 사용하여 저장된 소셜 미디어 로그인 정보를 삭제할 수 있습니다. 다음 예제는 Facebook 로그인 정보를 삭제하는 함수입니다.

func removeFacebookLoginInfo() {
    do {
        try keychain.remove("FacebookToken")
        try keychain.remove("FacebookUserId")
    } catch let error {
        print("삭제 실패: \(error.localizedDescription)")
    }
}

remove(_:forKey:) 메소드를 사용하여 로그인 정보를 삭제하고, 삭제에 실패한 경우 localizedDescription를 통해 에러 메시지를 출력합니다.

위의 단계를 따르면 소셜 미디어 로그인 정보를 안전하게 저장하고 사용할 수 있습니다. 키체인을 사용하면 사용자의 개인 정보를 보호하고 암호화하여 앱의 보안성을 향상시킬 수 있습니다.

참고 자료