SwiftUI and AWS Amplify을 이용한 Sign in 구현 Part 1 주의점

qqskda·2021년 1월 19일
0
post-thumbnail

해당 포스트는 초보 Swift 유저가 다음 글을 따라서 구글및 페이스북 sign in 을 구현하며 겪은 어려움과 해결방안을 적어 놓았다.

Amplify 와 SwiftUI 를 이용하여 Sign In 구현하기 파트 1 - Medium

누가 이런걸 필요로 할까 싶지만 혹여나 나와 같이 SwiftUI의 낮은 이해도 혹은 매뉴얼의 불친절함으로 고생하는분들께 조그마한 도움이 됬으면 하는 바람으로 적는다.


Cocoapods 버전 해결

위의 사진과 같이 버전 문제의 경우 https://cocoapods.org/ 웹사이트에 방문하여 해당 API 의 최신버전이 무엇인지 검색하고, 그 버전으로 바꿔서 적어 주면 된다.

pod cache clean --all
pod update

Podfile 의 업데이트 이후 위의 코드를 실행하면 완료.

RuntimeError - [Xcodeproj] Unknown object version 에러시
https://github.com/CocoaPods/CocoaPods/issues/7458#issuecomment-379954100 참조


Sign in 버튼 구현

원본 코드.

var body: some View {
      let signInVC = SignInViewController()

      return ZStack {
          signInVC
          VStack {
              Button(action: {
                  signInVC.signInWithGoogle()
              }) {
                  Text("Sign In with Google")
              }
          }
      }
  }

return zstack 부분이 중요하다.
저 부분을 사용하지 않고 단순히 버튼만 구현할 경우 다음과 같은 오류가 발생한다.

// Error
cognitoauth.getsession: unexpectedly found nil while unwrapping an optional value

즉 다음과 같은 버튼들로 구현하려면 따로 View를 만들어 구현해야 한다.

  • 로그인 페이지를 따로 만들어 버튼을 넣는 경우가 많을테니 말이다.

관련 github issue page: https://github.com/aws-amplify/aws-sdk-ios/pull/1722


Operation Not Permitted 32

해당 오류는 콜을 하기 위한 조건이 충족되지 못한 상태이다.
로그인이 된 상태로 Sign in 버튼을 클릭하시면 발생 할 수 있는데 다음을 이용하여 로그인 상태를 확인 할 수 있다.

AWSMobileClient.default().addUserStateListener(self)

AWSMobileClientError 레퍼런스 - 에러 번호 안적혀 있음

0개의 댓글