티스토리 뷰

안녕하세요 :]

 

최근에 iOS 13으로 버전이 올라가면서

새로 생긴 기능 중 하나가 바로

"Sign in with AApple" 기능이죠.

 

그리고

"다른 소셜 로그인을 사용하고 있다면

애플 로그인도 무조건 사용해라!"

라는 애플 정책으로 인해서

저도 애플 로그인을 달아야 합니다..ㅠㅠ

 

그래서 저번에는 애플 가이드를 통해

애플 로그인 방법을 알아봤었는데요.

 

https://developer-fury.tistory.com/50

 

[Swift] Sign in with Apple - 애플 로그인 사용해보기!!

안녕하세요 :] 퓨리입니다~ 아래는 "Apple로 로그인"에 대한 지침이에요. 이로서 소셜 로그인을 사용하는 앱들은 무조건 Apple로 로그인하기 기능을 구현해야 합니다. 기존에 앱스토어에 등록되어 있는 앱은 유예..

developer-fury.tistory.com

 

이번에 Firesbase에서

애플 로그인을 지원하고 있다는 소식을 듣고

사용해 봤습니다.

 

아래의 링크를 보시면

문서가 있습니다!

 

https://firebase.google.com/docs/auth/ios/apple

 

iOS에서 Apple을 통해 인증하기  |  Firebase

Firebase SDK를 통해 엔드 투 엔드 OAuth 2.0 로그인 과정을 실행하여 사용자가 Apple ID를 사용해 Firebase에 인증하도록 할 수 있습니다. 중요: Apple로 로그인하려면 사용자는 다음을 충족해야 합니다. 2단계 인증(2FA)이 사용 설정된 Apple ID가 있어야 합니다. Apple 기기에서 iCloud에 로그인되어 있어야 합니다. Apple로 로그인 사용 방법을 참조하세요. Apple로 로그인과의 통합을 테스트하려면 다음 요

firebase.google.com

 

그래서 저도 똑같이 따라 해 봤는데요.

아니..

"Nonce is missing in the request." 에러가 계속 발생하는 겁니다..

 

Error Domain=FIRAuthErrorDomain Code=17999 "An internal error has occurred, print and inspect the error details for more information." UserInfo={NSUnderlyingError=0x60000388a820 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey={
    code = 400;
    errors =     (
                {
            domain = global;
            message = "MISSING_OR_INVALID_NONCE : Nonce is missing in the request.";
            reason = invalid;
        }
    );
    message = "MISSING_OR_INVALID_NONCE : Nonce is missing in the request.";
}}}, FIRAuthErrorUserInfoNameKey=ERROR_INTERNAL_ERROR, error_name=ERROR_INTERNAL_ERROR, NSLocalizedDescription=An internal error has occurred, print and inspect the error details for more information.}
An internal error has occurred, print and inspect the error details for more information.

 

그래서 알아본 결과,

 

 

분명 제가 본건 OAuthProvider의

credential을 생성할 때

 

전달 인자가 withProviderID, idToken, accessToken이었어요.

그런데!

계속 삽질하면서 왜 안되는 거야

그러고 있는데

 

어느 순간 보니까 공식 문서가 수정이 된 것 같아요..

진짜예요...

 

아래 중국인 개발자도 저랑 같은 문제를 호소하고 있었습니다!!

 

https://stackoom.com/question/3zbXO/%E4%BD%BF%E7%94%A8Apple%E4%B8%BAFirebase-IOS-Swift%E8%AE%BE%E7%BD%AE%E7%99%BB%E5%BD%95%E6%97%B6%E5%87%BA%E9%94%99%E7%9A%84%E5%8E%9F%E5%9B%A0

 

ios - 使用Apple为Firebase IOS13 Swift设置登录时出错的原因? - 堆栈内存溢出

我一直在关注https://firebase.google.com/docs/auth/ios/apple ,它确实提到了我收到的错误,即“将SHA256哈希的随机数作为十六进制字符串发送”,但它没有提供任何错误帮助解决该问题,但是我的搜索没有给我提供可行的解决方案。 我的视图控制器代码摘录是 fileprivate var currentNonce: String? @objc @available(iOS 13, *) func startSignInWithAppleFlow() { let nonc

stackoom.com

 

 

그래서 갑자기

결론은!!

 

변경된 전달 인자를 보면

acessToken이 아니라

rawNonce에 nonce 값을 넣어주고 있어요.

 

 

네..

전달 인자가 withProviderID, idToken, rawNonce입니다.

 

rawNonce!!!!!!

여기에 nonce가 들어가는 게 맞겠죠ㅋㅋㅋㅋ

 

아 진짜 공식 문서에 rawNonce가 아니라 acessToken이었는데

어이가 없네요..ㅎㅎ

 

혹시나

만약에

저와 같은 말도 안 되는 이유가 발생한다면

전달 인자를 유심히 살펴보시기 바랍니다..ㅎㅎ

 

파이어베이스를 이용한 애플 로그인은

제가 한번 해보고

포스팅하도록 하겠습니다.

 

 

댓글