Flutter/SNS Login

[Flutter] Apple Login 구현 - Ios App

주톨 2024. 9. 30. 02:14
728x90

 

설정이 안 된 분은 아래글을 통해 설정을 하고 와주세요.

 

https://jutole.tistory.com/154

 

[Flutter] Apple Login 설정 - Ios App

Ios App 환경에서 apple 로그인을 하기 위한 설정 입니다.   1.  App IDs 등록   이러한 페이지로 오게 됩니다. 여기서 2개의 Identifier를 등록해주어야 합니다.추가버튼을 누르면 여러 항목들이 쭉

jutole.tistory.com

 

 

 

 

1.  sign_in_with_apple 패키지 설치

 

https://pub.dev/packages/sign_in_with_apple

 

sign_in_with_apple | Flutter package

Flutter bridge to initiate Sign in with Apple (on iOS, macOS, and Android). Includes support for keychain entries as well as signing in with an Apple ID.

pub.dev

 

 

 

2. Apple Login Button 생성

class _AppleLoginButton extends StatelessWidget {
  const _AppleLoginButton();

  @override
  Widget build(BuildContext context) {
    return SignInWithAppleButton(
      onPressed: () {},
      style: SignInWithAppleButtonStyle.black, /// 색상 지정 가능
      height: 44, /// 버튼 높이 지정 가능
      borderRadius: BorderRadius.circular(8), /// 모서리 지정 가능
      iconAlignment: IconAlignment.center, /// 아이콘 위치 지정 가능
      text: 'Sign in with Apple', /// 텍스트 지정 가능
    );
  }
}

 

위 코드와 같이 sign_in_with_apple패키지에서 제공하는 SignInWithAppleButton을 사용하면 AppleLoginButton 디자인을 자동으로 생성해 줍니다. 버튼 디자인이 애플이 규정하는 디자인에 맞지 않으면 앱 심사에서 거절당하니 해당 기능으로 버튼을 만들어주는 게 좋습니다.

 

 

3. Login Event

return SignInWithAppleButton(
  onPressed: () async {
    final result = await SignInWithApple.getAppleIDCredential(
      scopes: [
        AppleIDAuthorizationScopes.email,
        AppleIDAuthorizationScopes.fullName,
      ],
    );

    /// 사용자 이메일
    /// 사용자 설정에 따라서 비공개 이메일이 올 수 있음.
    /// 첫 로그인시에만 오고 그 후로는 null 반환.
    print(result.email ?? '');

    /// 사용자 이름 (성)
    /// 첫 로그인시에만 오고 그 후로는 null 반환.
    print(result.familyName ?? '');

    /// 사용자 이름 (이름)
    /// 첫 로그인시에만 오고 그 후로는 null 반환.
    print(result.givenName ?? '');

    /// Apple에서 발급하는 해당앱의 유저 고유 식별자.
    print(result.userIdentifier ?? '');

    /// Apple에서 발급하는 JWT 형식의 신원 확인 토큰.
    print(result.identityToken);

    /// 짧은 기간 유효한 인증 코드로, 서버에서 Apple과 통신해 사용자 인증을 확인할 때 사용됩니다. 
    print(result.authorizationCode);
  },
);

 

기본적으로 Apple Login 방법은 SignInWithApple.getAppleIDCredential()를 사용해 할 수 있습니다.

 

 

 

 

해당 방법으로 로그인을 하면 이러한 화면이 뜨면서 로그인이 가능합니다.

- (아이폰에서만 됩니다. 웹이나, 안드로이드에서는 다르게 구현해야 합니다.)

 

 

 

 

심화 구현

받아온 정보들로 회원가입 또는 로그인 처리를 하시면 됩니다. 조금 더 심화 구현을 보고 싶다면 다음 글로 와주세요.

https://jutole.tistory.com/157

 

[Flutter] Apple Login 심화 구현 - Ios App

https://jutole.tistory.com/156 [Flutter] Apple Login 구현 - Ios App설정이 안 된 분은 아래글을 통해 설정을 하고 와주세요. https://jutole.tistory.com/154 [Flutter] Apple Login 설정 - Ios AppIos App 환경에서 apple 로그인을

jutole.tistory.com