React Native 애플 연동 로그인

Junghyun Park·2021년 7월 20일
1

배경

2020년 4월부터 앱스토어 정책 상, 소셜로그인 기능이 들어가는 경우, 아이폰은 반드시 apple 연동 로그인 기능이 포함되어야 함

활용 (로그인)

...
import appleAuth, {
  AppleButton,
} from '@invertase/react-native-apple-authentication';
import jwt_decode from 'jwt-decode';
...
const signInWithApple = async () => {
    // performs login request
    const appleAuthRequestResponse = await appleAuth.performRequest({
      requestedOperation: appleAuth.Operation.LOGIN,
      requestedScopes: [appleAuth.Scope.EMAIL, appleAuth.Scope.FULL_NAME],
    });

    const { email, email_verified, is_private_email, sub } = jwt_decode(
      appleAuthRequestResponse.identityToken,
    );

    // get current authentication state for user
    // /!\ This method must be tested on a real device. On the iOS simulator it always throws an error.
    const credentialState = await appleAuth.getCredentialStateForUser(
      appleAuthRequestResponse.user,
    );

    // use credentialState response to ensure the user is authenticated
    if (credentialState === appleAuth.State.AUTHORIZED) {
      // user is authenticated
      setResult(`
        email: ${email}
        email_verified: ${email_verified}
        is_private_email: ${is_private_email}
        sub: ${sub}`);
    }
  };
  ...
	 <AppleButton
                buttonStyle={AppleButton.Style.BLACK}
                buttonType={AppleButton.Type.SIGN_IN}
                style={{
                  width: 350, // You must specify a width
                  height: 45, // You must specify a height
                }}
                onPress={signInWithApple}
              />

참고

로그아웃 기능은 함수가 있긴 하나, 애플도 이 함수를 사용하지 않고, 로그아웃 하고자 하는 경우에는 전달받은 사용자 정보를 clear하는 방식을 recommand하고 있음

profile
21c Carpenter

0개의 댓글