본문 바로가기

[Android]/허접 Programming Tips

[소셜로그인] 안드로이드 애플 로그인(Sign in with apple) 구현하기 2편

안녕하세요!

허접 샴푸입니다.

요새 통 바빠서 포스트를 작성하지 못했습니다.

 

이번 편은 안드로이드에서 애플 로그인을 구현하기 위해 필요한 서버 쪽을 알아보도록 하겠습니다.

 

거두절미하고 어떻게 구현하는지 바로 알아보도록 하겠습니다.

 

[START]

1. client_secret을 구합니다.

출처: https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple

 

필요한 값들

[key_file]

1편에서 생성한 Key 파일입니다.

위 ruby 스크립트와 같은 폴더에 다운받은 .p8 확장자의 Key 파일을 집어넣습니다. 참고로 저는 .p8 확장자를 파일명에서 제거하여 key.p8이 아닌 key로 설정 및 작성하였습니다.

 

직접 작성하셔야 할 값들은 TODO라고 표시해두었습니다.

[team_id]

team_id https://developer.apple.com/account/resources/identifiers/list로 들어간 뒤,

1편에서 설정한 NAME의 아이템을 선택하여 들어가면 App ID Prefix라는 놈 밑에 적혀 있습니다.

 

[client_id]

client_id https://developer.apple.com/account/resources/identifiers/list/serviceId로 들어가면

IDENTIFIER이라고 되어있는 놈의 값입니다.

 

[key_id]

key_id https://developer.apple.com/account/resources/authkeys/list로 들어간 뒤,

1편에서 sign in with apple과 관련하여 생성한 Key 아이템을 선택해서 들어가면

Key ID라는 놈의 값입니다.

 

그럼 이제 ruby 스크립트를 다 작성한 후 아래 커맨드를 실행해서 client_secret 값을 구합니다.

ruby client_secret.rb

 

2. php 파일을 작성합니다. (redirect url)

직접 작성하셔야 할 값들은 TODO라고 표시해두었습니다.

[client_id]

client_id https://developer.apple.com/account/resources/identifiers/list/serviceId로 들어가면

IDENTIFIER이라고 되어있는 놈의 값입니다.

 

[client_secret]

client_secret은 위에서 ruby client_secret.rb 커맨드를 실행하여 나온 값을 집어넣습니다.

 

[redirect_uri]

redirect_uri는 1편에서 말씀드린 Return URLs에 작성한 주소를 적습니다.

1편에서 말씀드린 Return URLs에 저는 위 php가 있는 서버 주소를 작성하였습니다.

즉 (www.도메인명.com/apple-login-callback.php) 형태가 되겠군요.

 

앱 단에서 로그인 처리가 끝나면 콜백 url로 code라는 authorization code를 post로 던져줍니다.

그래서 서버 php에서는 $_POST['code']로 해당 코드를 받아옵니다.

 

해당 코드를 이용하여 php 안에서 POST로 https://appleid.apple.com/auth/token를 호출합니다.

성공적으로 API 호출이 끝나면 해당 reponse를 디코딩하여 값을 구해줍니다.

애플 문서: https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens

 

(참고사항)

header("LOCATION: ?status=success&email={$claims->email}");

형태로 코드를 작성한 이유는 안드로이드 단에서 webview로 apple sign in 구현을 하게 됩니다. 

서버에서 정상적으로 작업이 완료되면 header라는 함수를 호출하여 url을 바꿔줍니다. 

그럼 안드로이드 단에서 url에 email 값이 들어온 것을 확인하여 로그인된 계정의 email을 받아올 수 있게 됩니다.

 

저 Response가 성공적으로 완료되면 아래와 같은 값을 확인할 수 있게 됩니다.

출처: https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple

 

 

다음 3편에서 Android를 구현하면 이 작업들이 무엇을 위한 작업인지 알 수 있게 됩니다. 그럼 3편에서 마무리 짓도록 하겠습니다!

 

저는 애플 로그인을 구현해야 하는 데 애플 문서를 봐도 잘 모르겠고 하여 아래 사이트를 참고하였습니다.

영어가 익숙하신 분께서는 제 블로그 보단... ㅜㅜ 아래 사이트를 참고하시는 것이 빠를 수도 있습니다.

https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple

 

What the Heck is Sign In with Apple?

Sign In with Apple is based on OAuth 2.0 and OpenID Connect, and provides a privacy-friendly way for users to sign in to websites and apps

developer.okta.com