로그인 검수

앱에서 public_profileemail 외에 다른 것을 요청할 경우 릴리스 전에 Facebook의 검수를 받아야 합니다. 검수 절차 및 검수를 통과하는 데 필요한 사항에 대해 자세히 알아보세요.

로그인 검수 가이드

맞춤 설정 로그인 버튼

Facebook 브랜드 로그인 버튼(iOS용 Facebook 로그인 - 빠른 시작)을 사용하는 대신 맞춤 설정 레이아웃과 동작을 디자인하고 싶을 수도 있습니다. 다음 코드 예시에서는 로그인 관리자 클래스(LoginManager)와 맞춤 설정 버튼(UIButton)을 사용하여 로그인 대화 상자를 호출합니다. 다른 맞춤 설정 사용자 인터페이스 또는 이벤트 처리를 사용하여 로그인 대화 상자를 호출할 수 있습니다.

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // Add a custom login button to your app
        let loginButton = UIButton(type: .custom)
        loginButton.backgroundColor = .darkGray
        loginButton.frame = CGRect(x: 0, y: 0, width: 180, height: 40)
        loginButton.center = view.center
        loginButton.setTitle("My Login Button", for: .normal)

        // Handle clicks on the button
        loginButton.addTarget(self, action: #selector(loginButtonClicked), for: .touchUpInside)

        view.addSubview(loginButton)
    }
  
  
    // Once the button is clicked, show the login dialog
    func loginButtonClicked() {
        let loginManager = LoginManager()
        loginManager.logIn(permissions: ["public_profile"], from: self) { result, error in
            if let error = error {
                print("Encountered Erorr: \(error)")
            } else if let result = result, result.isCancelled {
                print("Cancelled")
            } else {
                print("Logged In")
            }
        }
    }
}

    

인터페이스 빌드 도구 사용

이 단계는 Facebook iOS SDK 버전 12.0.0 이상에 필요합니다. Interface Builder를 사용하는 앱은 이 단계를 완료하지 않으면 중단될 수 있습니다.

로그인 버튼을 그래픽 방식으로 Interface Builder에 추가하는 방법은 다음과 같습니다.

  1. UIButton 개체를 레이아웃에 추가합니다. 제약을 설정해 배치합니다.
  2. Identity inspector에서 Class 속성을 FBSDKLoginButton으로 변경합니다.

이제 다음과 같은 형태의 레이아웃이 생성됩니다.

참고: FBSDKLoginButton 클래스에 모듈을 설정하지 마세요. 없음으로 표시되어야 합니다.

참고: XCFrameworks의 알려진 문제로 인해 Xcode 로그에서 다음과 같은 오류가 나타날 수 있습니다.

[Storyboard] Unknown class FBSDKLoginButton in Interface Builder file.

다음을 application:didFinishLaunchingWithOptions: 메서드에 추가하여 FBSDKLoginButton 클래스를 '미리 읽어들인' 후 스토리보드를 읽어들이는 방법으로 이 문제를 해결할 수 있습니다.

// For Swift
_ = FBLoginButton.self

// For Objective-C
[FBSDKLoginButton class];

액세스 토큰

알림

NotificationCenter.AccessTokenDidChange 알림으로 AccessToken.current 변경 사항을 추적할 수 있습니다. 이를 통해 사용자 로그인 상태 변화에 응답할 수 있습니다.

NotificationCenter.default.addObserver(
    forName: .AccessTokenDidChange,
    object: nil,
    queue: .main
) { notification in
    if notification.userInfo?[AccessTokenDidChangeUserIDKey] != nil {
        // Handle user change
    }
}

iOS SDK는 시간이 지남에 따라 AccessToken.current를 업데이트할 수 있습니다(예: SDK가 만료 날짜를 연장하여 토큰을 새로 고침한 경우). 따라서 AccessTokenDidChangeUserIDKey에 대한 알림에서 userInfo 사전을 조회한 후 사용자가 변경되었는지 확인해야 합니다.

프로필

Profile에는 공개 프로필 정보가 포함되어 있으므로 사용자 이름과 프로필 사진으로 앱을 개인화할 수 있습니다. loadCurrentProfile(completion:)을 사용하여 로그인된 사용자의 프로필을 읽어들일 수 있습니다.

Profile.loadCurrentProfile { profile, error in
    if let firstName = profile?.firstName {
        print("Hello, \(firstName)")
    }
}

enableUpdatesOnAccessTokenChange 속성을 true로 설정하면 프로필을 Profile.current로 자동으로 읽어들일 수 있습니다. 또한 .ProfileDidChange 알림을 모니터링하여 프로필 변경 사항에 응답할 수 있습니다.

Profile.enableUpdatesOnAccessTokenChange(true)
NotificationCenter.default.addObserver(
    forName: .ProfileDidChange,
    object: nil,
    queue: .main
) { notification in
    if let currentProfile = Profile.current {
        // Update for new user profile
    }
}

프로필 사진 표시

FBProfilePictureView 클래스는 사용자의 Facebook 프로필 사진을 간편하게 표시할 수 있는 방법을 제공합니다. 인스턴스에서 profileID 속성을 설정하기만 하면 됩니다. AccessToken.current.userID 값으로 설정하면 현재 로그인한 사용자의 프로필 사진을 표시할 수 있습니다.

let profilePictureView = FBProfilePictureView()
profilePictureView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
profilePictureView.profileID = AccessToken.current!.userID
view.addSubview(profilePictureView)

승인 유형 설정

iOS용 Facebook SDK에서 Facebook 로그인 버튼의 기본 auth_type재요청입니다. 이전에 거부된 권한을 요청하지 않으려면 auth_typenil로 설정합니다. 또한 재승인으로 설정하면 사용자 데이터 액세스가 만료되었을 때 데이터 재승인 대화 상자를 표시할 수 있습니다.

다음 예시는 Swift에서 auth_type을 설정하는 방법을 보여줍니다.

let loginButton = FBLoginButton()

// Set to nil for no auth_type
button.authType = nil

// Or set to reauthorize
button.authType = .reauthorize

다음 예시는 로그인 관리자에서 로그인 구성을 사용하여 auth_type을 설정하는 방법을 보여줍니다.

let config = LoginConfiguration(
    permissions: [],
    tracking: .enabled,
    messengerPageId: nil,
    authType: nil
)

let loginManager = LoginManager()
loginManager.logIn(viewController: self, configuration: config!) { loginResult in
    // Do something with loginResult
}