coolishbee / universal-sdk-unity

The Universal SDK for Unity provides a modern way of implementing Social Login APIs.
45 stars 11 forks source link

안드로이드에서 애플로그인시 인증 오류가 발생합니다. #27

Closed dydgus5120 closed 9 months ago

dydgus5120 commented 10 months ago

What did you do?

리다이렉션 서버 부분까지는 했습니다. 그런데 그 다음에 오류가 발생하면서 인증이 안됬다는 메세지가 나옵니다.

그래서 찾아보니까 토큰 인증하는 부분도 해줘야 한다고 하는데 이걸 어떻게 하는지 감이 잡히질 않습니다.

현재 리다이렉션 서버는 파이어베이스의 functions로 구현해서 쓰고 있습니다. 문서에 있는 고 언어를 자바스크립트로 변환해서 올려서 구현했구요

문서에 있는 토큰 검증 부분을 만들어서 어디서 호출시켜야 하는지를 모르겠습니다.

Please describe what you did before you encounter the issue.

What did you expect?

Please describe what you did expect to happen.

What happened actually?

Please describe what happened actually.

Your environment?

Some information of the environment in which the issue happened. Universal SDK version, Unity version, Android version, iOS version, etc.

Screenshots or Log

Log

{"identifier":"8b30bcbd-43fb-4da2-8274-c103164b464e","value":"{\"code\":7002,\"message\":\"code not returned\"}"} Universal.UniversalSDK.UniversalSDK:OnApiError(String)

It would be appreciated if you can provide a screenshot or log that i can infer the issue.

coolishbee commented 10 months ago

리다이렉트 예제에서 coolish://callback? 와 함께 붙는 Request Body를 문자열로 출력해보시겠어요? 그 안에 code 라는 파라미터가 있어야 해요. 그 code가 인증코드거든요. 말하자면 애플측에서 정상적인 로그인처리가 됐다는 메시지를 문자열에 실어보내줍니다. 그걸 유저가 받아서 Redirect 해주시면 SDK내에서 파싱하는거구요. 파싱하는 과정에서 code 라는 파라미터가 없는경우 위와같은 메시지가 리턴됩니다.

dydgus5120 commented 10 months ago

@coolishbee

필수렉트 예제에서 coolish://callback? 와 함께 작동하면 요청 본문을 문자열로 출력할 수 있을까요? 그 안에 코드가 있을 것 같아요. 그 코드가 진짜 코드였어요. 반환된 애플측에서 반환되는 반환값은 반환됩니다. 리다이렉션을 하면 SDK내에서 파싱하는 것을 할 수 있습니다. 파싱하는 과정에서 코드가 용서받을 수 없는 동일한 메시지가 반환됩니다.

image

네 로그로 봤을때 코드라는 항목이 있습니다. 값은 혹시 노출되면 안되는건가 싶어서 가렸습니다.

coolishbee commented 10 months ago

네 code state id_token 받으신 값 그대로 coolish://callback? 뒤에 붙혀서 리다이렉트하시면 되실겁니다 서버내에서 따로 파싱을 하실 필요없이 받은 그대로 넘겨주세요.

dydgus5120 commented 10 months ago

@coolishbee 이미 리다이렉트했습니다. 했는데

{"identifier":"8b30bcbd-43fb-4da2-8274-c103164b464e","value":"{"code":7002,"message":"code not returned"}"} Universal.UniversalSDK.UniversalSDK:OnApiError(String) code not returned

위와 같은 에러가 발생합니다.

coolishbee commented 10 months ago

혹시 애플측에서 넘어오는 문자열 형태가 https://appleid.apple.com/...?code=CODE_VALUE&state=12345&id_token=12345 이렇지 않나요? 이걸 그대로 coolish://callback? 뒤에 붙혀서 리다이렉트해야 sdk내에서 url의 쿼리스트링을 파싱하거든요

dydgus5120 commented 10 months ago

@coolishbee 아니요 문자열 형태 json으로 찍히던데요 golang에서 nodejs로 변환해서 쓰고 있는데 json 형태로 로그는 찍히는걸로 확인했습니다. image

coolishbee commented 10 months ago

아 그러면 애플측에서 보내주는 방식을 변경한거 같습니다ㅜㅜ 확인해보고 SDK 업데이트를 진행해야 할 것 같습니다. 죄송합니다ㅜㅜ빠른시일내에 처리하도록 노력하겠습니다.

확인결과 기존방식과 동일하며 사용자 서버내에서 json 으로 파싱하지 않고 쿼리스트링 그대로 사용해야 합니다. 사용예는 문서에서 참고바랍니다.

>당장 현재 버전에서 진행하시려면 편법으로 url 형태의 쿼리스트링을 조합하여 리다이렉트하신다면 아마 정상작동 될거라 봅니다.

dydgus5120 commented 10 months ago

@coolishbee 그러면 위에 알려주신 주소 형식에 값들만 바꿔서 쓰면 되는건가요?

coolishbee commented 10 months ago

coolish://callback?https://appleid.apple.com/auth/authorize?code={0}&state={1}&id_token={2}

이런식으로 해보시겠어요?

dydgus5120 commented 10 months ago

@coolishbee 알려주신대로 해도 똑같은 에러가 발생합니다.

{"identifier":"8b30bcbd-43fb-4da2-8274-c103164b464e","value":"{"code":7002,"message":"code not returned"}"} Universal.UniversalSDK.UniversalSDK:OnApiError(String)

혹시 제가 리다이렉트URL을 파이어베이스 펑션에서 자동으로 만들어주는 주소로 했는데 그것때문일 가능성이 있을까요? 저 주소를 문서에 나오는대로 애플 계정에 등록하고 Sign in with Apple for Email Communication 여기에도 등록하라는 글을 봐서 등록했는데 파이어베이스 펑션에서 자동으로 만들어주는 주소는 통과가 안되더라구요 이런것도 문제가 될 수 있을까요?

coolishbee commented 10 months ago

제가 파이어베이스 펑션으로는 테스트해보지 않아서 그 부분에 대해선 자세한 답변은 어렵겠네요;; 애플로그인 리다이렉트 서버의 조건은 ssl 인증서가 적용되어야 하고 공개서버면 되는 걸로 아는데 우선 @dydgus5120 님께서는 애플로부터 post 수신을 하신거라 문제는 없어보이거든요 리다이렉트시 클라이언트sdk가 url를 받아 파싱하게 되있는데 이 부분이 뭔가 안맞는거같아요 저도 테스트좀 해보고 다시 말씀드릴게요 불편을 드려 죄송합니다

dydgus5120 commented 10 months ago

@coolishbee 넵 감사합니다. 저도 이것저것 수정해보면서 테스트는 해보고 있는데 아직은 안되네요

coolishbee commented 10 months ago

coolish://callback?code=asjhdasd&state=fccjj2&id_token=asdkjsakdj 이렇게 한번 테스트 해보실 수 있으신가요? 몇달전만해도 문제없었는데 안드로이드 iOS 양쪽다 변경사항이 있어서 그런지 아직 확인하기가 어렵네요

dydgus5120 commented 10 months ago

@coolishbee coolish://callback?code=asjhdasd&state=fccjj2&id_token=asdkjsakdj 이 값 그대로 사용해야 하는건가요?

coolishbee commented 10 months ago

아뇨 실제 애플로그인시 애플측으로 부터 받은 값을 넣어주셔야 합니다. json으로 받으신거 파싱하셔서 쿼리스트링에 넣어주세요 coolish://callback?code={0}&state={1}&id_token={2}

dydgus5120 commented 10 months ago

@coolishbee 이미 위에서 알려주신대로 했었는데 같은 에러 로그가 나오더라구요

gofogo2 commented 9 months ago

@coolishbee 저도 같은 문제가 발생합니다, https://github.com/coolishbee/android-apple-login-sample 아마 이 소스를 기반으로 sdk 개발하신 거 같은데, 해당 소스에서는 redirect 서버를 수정하면 정상적으로 로그인 성공이 뜨지만 저도 마찮가지로 {"code":7002,"message":"code not returned"}"} 메세지가 발생합니다.

-위 소스를 통해서 code에 null 값이 들어오는 걸 확인하였고, res.redirect(/oauth/callback?coolish://callback?${queryString}&code=code); 뒷부분에 code를 한번 더 넣어줌으로써 임시로 해결하긴하였습니다.

-구축 redirect 서버 image

-위에 소스 android-login-sample image

두 프로젝트가 모두 정상적으로 진행되는 거보면 sdk 만드신 intent 부분에서 오류가 있는 거 같습니다. ㅠㅠ 꼭 수정 부탁드리거나, 그게 안된다면 sdk 공유 좀 부탁드려요

coolishbee commented 9 months ago

@gofogo2 정말 죄송합니다. 제가 사정상 redirect서버 구축하기엔 시간이 걸려서요;; 혹시 apple_client_id 와 redirect_url 의 정보공유가 가능하시다면 chc3484@gmail.com 로 부탁드려도 될까요?