Ask Your Question
0

외부 서비스 인증 관련해서 문의 드립니다.

asked 2019-02-26 16:46:04 +0900

simpler gravatar image

updated 2019-02-26 16:46:50 +0900

페이스북(또는 Google plus) 인증 유효성 검증시 strcut FacebookAuthenticationResponse( 또는 GooglePlusAuthenticationResponse) 의 client_id 는 어떤값을 지니고 있는지 문의드립니다. 해당 id가 중복되지 않는(변경되지 않는) 고유한 id 가 맞다면 게임에서 account id로 사용 해도 될까요? 아니면 페이스북(또는 goole )의 로그인 이메일 주소(계정id)를 알수 있는 방법이 있을까요?

edit retag flag offensive close merge delete

8 answers

Sort by » oldest newest most voted
0

answered 2019-04-18 12:28:20 +0900

inkeun.kim gravatar image

updated 2019-04-18 12:34:29 +0900

응답값으로 돌아온 azp 혹은 aud 값을 app id에 입력 부탁드립니다.

"azp":"518278299668-gas35tgmlnrnh95a76atjkiskciqkrdr.apps.googleusercontent.com", "aud":"518278299668-vh67rn9bfan7helm0dbs7159qmq3a1tf.apps.googleusercontent.com"

인증 시 필요로 하는 app id는 google API console 에 등록된 값을 기준으로 설정되어 있습니다.

추가로 google play game 관련된 매뉴얼에 설명을 추가해두겠습니다.

edit flag offensive delete link more

Comments

말씀하신 " 응답값으로 돌아온 azp 혹은 aud 값을 app id에 입력 부탁드립니다." 란 말씀은 정확하게 어느쪽을 말씀하시는건가요?

simpler gravatar imagesimpler ( 2019-04-18 13:41:19 +0900 )edit

게임 서버의 GooglePlayGameAuthenticationRequest 구조체 내 app id에 azp 혹은 aud로 넘어온 응답 값을 입력하시면 됩니다.

azp, aud 어느 값을 사용하셔도 상관없습니다. (azp를 먼저 검사하고 다를 시 aud를 추가로 확인합니다.)

inkeun.kim gravatar imageinkeun.kim ( 2019-04-18 13:47:40 +0900 )edit

응답값으로 돌아온 의미는 클라에서 받는 의미 인거죠?

simpler gravatar imagesimpler ( 2019-04-18 14:28:15 +0900 )edit

확인해보니 클라이언트가 보내야 하는 값이 app_id가 아니고 client id 이네요.

simpler gravatar imagesimpler ( 2019-04-18 14:31:21 +0900 )edit

서버 응답으로 돌아온 값을 사용하시면 됩니다. 저 위의 azp, aud 로 넣은 내용에 해당합니다.

다만 이 방법은 임시 방편이며, 정식으로는 구글 개발자 콘솔의 안드로이드 앱과 연결된 프로젝트 계정의 OAuth Client ID에 해당하는 값을 넣어 주셔야 합니다. (해당 값이 옳바른 클라이언트 요청을 게임 서버가 받아서 구글 서버에 인증한 경우, 해당 응답에 적절한 azp, aud 로 오기 때문에 그 azp, aud 값을 써도 된다고 김인근님이 답변했습니다)

Jinuk gravatar imageJinuk ( 2019-04-18 14:32:16 +0900 )edit
0

answered 2019-04-18 15:19:45 +0900

simpler gravatar image

updated 2019-04-18 17:15:09 +0900

서버 인증 예제에서 클라이언트로 부터 받아야 하는 정보가 app_id 와 id_token 인데요. app_id란 용어가 적절한지 문의 드려요. 아래 질문에서도 제가 app id가 어떤 값을 의미하는지를 질문 드렸었고요. 답변은 google play에 등록된 app id라고 말씀하셨는데요. 결론적으로 말씀드리면 애플리케이션 id가 아니라 클라이언트 id를 입력해야 인증이 성공이 되네요.
개발자 콘솔에 보면 에플리케이션 id와 클라이언트 ID 가 각각 따로 있습니다.

edit flag offensive delete link more

Comments

app_id 와 관련하여 더 적절한 의미를 가질 수 있는 네이밍으로 변경할 수 있게 고민해보겠습니다. 감사합니다.

inkeun.kim gravatar imageinkeun.kim ( 2019-04-18 15:58:04 +0900 )edit
0

answered 2019-04-18 15:16:01 +0900

inkeun.kim gravatar image

아래와 같이 구조체를 초기화해주시고 인증 시 성공 여부와 로그를 확인부탁드립니다.

GooglePlayGameAuthenticationRequest request(
  /* azp 혹은 aud 입력*/,
  /* client가  ((PlayGamesLocalUser)Social.localUser).GetIdToken()  를 통해 얻은 값 입력 */);


..인증 요청 전송..
edit flag offensive delete link more

Comments

azp와 aud 값을 하드코딩 하지 않고..클라이언트가 구글 콘솔에 등록된 클라이언트 Id 값을 받아서 처리하면 됩니다. 인증성공됩니다.

simpler gravatar imagesimpler ( 2019-04-18 15:25:48 +0900 )edit
0

answered 2019-02-26 17:03:20 +0900

inkeun.kim gravatar image

updated 2019-02-26 17:03:56 +0900

안녕하세요. client id는 유저 식별용으로 사용되며 중복되지 않는 고유한 값(account id 등)으로 사용하실 수 있습니다. 현재 Facebook, Google Plus 인증의 경우 email을 응답을 돌려주지 않고 있는데요, 차후에 이를 수정할 수 있을지 확인해보겠습니다.

  • Google+ 의 경우 2019년 3월 7일부터 Google+ 관련 API 의 사용 지원이 중단되어 저희쪽에서도 해당 API는 deprecated 처리예정입니다. 관련 내용 링크 ==> https://developers.google.com/+/integ...
edit flag offensive delete link more

Comments

넵 확인 감사드립니다.

simpler gravatar imagesimpler ( 2019-02-26 17:16:02 +0900 )edit

넵. 추가로 질문이 있으시면 언제든 문의부탁드립니다. 감사합니다.

inkeun.kim gravatar imageinkeun.kim ( 2019-02-26 17:23:11 +0900 )edit
0

answered 2019-04-18 12:06:37 +0900

simpler gravatar image

updated 2019-04-18 12:08:10 +0900

Jinuk gravatar image

Google Play Game 인증시 정확한 로그는 아래와 같습니다.

W0418 10:54:21.489495 28075 google_play_game_authentication.cc:335] JWT key kid=3782d3f0bc89008d9d2c01730f765cfb19d3b70e does not found in preloaded JWKS
[New Thread 0x7fffd8fff700 (LWP 28181)]
[New Thread 0x7fffd87fe700 (LWP 28182)]
[Thread 0x7fffd8fff700 (LWP 28181) exited]
'CurlIoGroup' (0x6e15) 스레드가 종료되었습니다(코드: 0 (0x0)).
[Thread 0x7fffd87fe700 (LWP 28182) exited]
'CurlIoGroup' (0x6e16) 스레드가 종료되었습니다(코드: 0 (0x0)).
I0418 10:54:21.719036 28076 google_play_game_authentication.cc:287] Google JWKS: added a new key (kid=6f6781ba71199a658e760aa5aa93e5fc3dc752b5)
I0418 10:54:21.719355 28076 google_play_game_authentication.cc:287] Google JWKS: added a new key (kid=3782d3f0bc89008d9d2c01730f765cfb19d3b70e)
E0418 10:54:21.742616 28076 google_play_game_authentication.cc:167] Failed to authenticate google play. invalid app id: {"iss":"https://accounts.google.com","azp":"518278299668-gas35tgmlnrnh95a76atjkiskciqkrdr.apps.googleusercontent.com","aud":"518278299668-vh67rn9bfan7helm0dbs7159qmq3a1tf.apps.googleusercontent.com","sub":"118092920621741853644","iat":"1555551891","exp":"1555555491","alg":"RS256","kid":"3782d3f0bc89008d9d2c01730f765cfb19d3b70e","typ":"JWT"}
[Switching to Thread 0x7fffdeff8700 (LWP 28075)]
edit flag offensive delete link more
0

answered 2019-04-15 17:31:41 +0900

simpler gravatar image

updated 2019-04-17 17:35:44 +0900

GooglePlayGame 인증 테스트중에 있는데요. 서버쪽으로 보내는 GooglePlayGameAuthenticationRequest 의 정보는 app_id = "518278299668" 이고, id_token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjM3ODJkM2YwYmM4OTAwOGQ5ZDJjMDE3MzBmNzY1Y2ZiMTlkM2I3MGUiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI1MTgyNzgyOTk2NjgtZ2FzMzV0Z21sbnJuaDk1Y" 인데요. GooglePlayGameAuthenticationResponse 정보를 확인해보면 success = false, error_code = 0, error_message = "", ... 이런식으로 리턴이 되는데요. success false 이면 어떤 부분을 확인해봐야 할까요?. MANIFEST.json 안의 use_authentication_service값은 true 입니다. 클라이언트쪽보내느 app_id를 정확하게 어떤 값을 의미하는지 알수 있을까요?

edit flag offensive delete link more

Comments

GooglePlayGame 인증 관련해서 클라이언트 사이드 쪽 참고할만한 부분이 있나요?

simpler gravatar imagesimpler ( 2019-04-16 09:55:25 +0900 )edit

안녕하세요. 아이펀팩토리입니다. 서버 쪽에서는 요청 시 출력하는 별다른 에러가 없는지 확인이 필요할 것 같습니다. 클라이언트 쪽은 사용하는 SDK에 따라 다르기 때문에 저희가 제공할 수 있는 내용이 많지 않지만, 설정 관련해서는 https://github.com/playgameservices/p... 문서를 참고하는 것도 도움이 되시리라 생각합니다.

gigone.lee gravatar imagegigone.lee ( 2019-04-16 10:07:20 +0900 )edit

현재 서버에서 인증시 실패가 되는데요. 에러값이 하나도없습니다. 원인을 어디서 찾아야 할까요?

simpler gravatar imagesimpler ( 2019-04-17 15:15:53 +0900 )edit

id_token = ((PlayGamesLocalUser)Social.localUser).GetIdToken() 이런식으로 id_toekn 얻는게 맞는건가요?

simpler gravatar imagesimpler ( 2019-04-17 17:37:23 +0900 )edit

안녕하세요, id토큰은 위 값을 의미하는 것이 맞으며 app id는 google play에 등록된 app id를 입력하셔야 합니다. 추가로 위 상황일 때 게임 서버의 에러 로그를 올려주실 수 있을까요?

inkeun.kim gravatar imageinkeun.kim ( 2019-04-17 17:57:12 +0900 )edit
0

answered 2019-03-15 17:03:40 +0900

simpler gravatar image

페이스북 인증시 서버의 FacebookAuthenticationResponse의 success는 정상이나, client_id 값이 없는 경우는 어떤 경우인가요?

edit flag offensive delete link more

Comments

안녕하세요. MANIFEST.json 안의 use_authentication_service 값을 확인해주실 수 있을까요? 이 값이 false 인 경우 테스트 모드로 동작하여 실제 페이스북 통신은 하지 않고 콜백만 호출합니다.

gigone.lee gravatar imagegigone.lee ( 2019-03-15 17:05:26 +0900 )edit

확인감사합니다. 환경이 달라서 설정을 놓쳤네요. ㅜ

simpler gravatar imagesimpler ( 2019-03-15 17:19:08 +0900 )edit
0

answered 2019-03-13 10:50:44 +0900

simpler gravatar image

updated 2019-03-13 10:51:05 +0900

Google Play Game 인증시 GooglePlayGameAuthenticationResponse 값에 account id 로 사용할수 있는 고유한 값이 없는데요. 별도의 게임서버에서 account id 를 생성해야 해야 하는게 맞는거죠?

edit flag offensive delete link more

Comments

안녕하세요. 계정 ID는 클라이언트 SDK 에서 얻을 수 있는 playerId 를 사용하면 됩니다. 서버에서 account_id 를 임의로 생성할 경우에도 playerId와 매칭하여 사용하셔야 합니다(그렇지 않을 경우 서버는 클라이언트 데이터에 의존하게 되므로, 클라이언트 데이터가 삭제될 경우 서버가 클라이언트를 식별할 수 없게 됩니다).

참고로 현재 서버 쪽에서 클라이언트가 보낸 playerId와 발급한 토큰이 모두 같은 사용자의 것인지 확인하는 방법을 제공하지 않는데, 이 API 는 빠른 시일내로 추가할 예정입니다.

gigone.lee gravatar imagegigone.lee ( 2019-03-13 11:11:29 +0900 )edit

빠른 업데이트 부탁드리겠습니다.^^

simpler gravatar imagesimpler ( 2019-03-13 14:25:07 +0900 )edit

안녕하세요. 추가로 도움이 될 수 있는 내용에 대해서 안내드립니다. Google 인증 시 얻은 ID token으로부터 유저 정보를 얻을 수 있는 방법을 사용하실 수도 있을 것 같아서 안내 해 드리려고 합니다. 1. 클라이언트가 Google 인증 시에 얻은 ID token를 게임 서버로 넘겨서 검증을 진행하고, 2. 1의 결과가 정상이라면 ID token을 서버에서 직접 디코딩해서 사용자 정보를 얻을 수 있습니다.

jwlee gravatar imagejwlee ( 2019-03-13 15:10:56 +0900 )edit

ID token은 다음과 같은 형태입니다. "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" 1. '.' 으로 split 하면, 세 부분으로 나눌 수 있는데, 2. 그 중 가운데 부분을 base64 decoding 하면 JSON 포맷 문자열을 뽑을 수 있습니다.

jwlee gravatar imagejwlee ( 2019-03-13 15:14:34 +0900 )edit

위의 샘플 토큰에서 추출한 JSON 객체는 아래와 같으며 "sub"에 해당하는 값이 account_id입니다. { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }

jwlee gravatar imagejwlee ( 2019-03-13 15:17:21 +0900 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2019-02-26 16:46:04 +0900

Seen: 102 times

Last updated: Apr 18