Android용 Facebook SDK를 사용하면 Facebook 로그인을 통해 Android 앱에 로그인할 수 있습니다. Facebook 계정으로 앱에 로그인하면 사용자는 개발자가 Facebook에서 본인 대신 정보를 가져오거나 액션을 수행하도록 앱에 권한을 부여할 수 있습니다.
Facebook 로그인을 Android 앱에 통합하는 방법을 보여주는 프로젝트의 예는 GitHub의 FBLoginSample을 참조하세요.
아래 단계에 따라 Facebook 로그인을 앱에 추가하세요.
buildscript { repositories {}}
에 다음 저장소가 나열되어 있는지 확인합니다. dependencies{}
섹션에 다음 구현 문을 추가하여 최신 버전의 Facebook 로그인 SDK를 사용합니다. Android용 Facebook SDK 버전 5.15 이상을 사용하는 경우 Chrome 맞춤 탭에 활동 또는 인텐트 필터를 추가할 필요가 없습니다. 이 기능은 SDK에 포함되어 있습니다.
Facebook 로그인을 통합하고 나서 특정 앱 이벤트가 이벤트 관리자에 대해 자동으로 로깅 및 수집됩니다. 단, 자동 앱 이벤트 로깅을 비활성화한 경우는 예외입니다. 수집되는 정보 및 자동 앱 이벤트 로깅을 비활성화하는 방법에 대한 자세한 내용은 자동 앱 이벤트 로깅을 참조하세요.
FacebookActivity
를 Android 매니페스트에 추가합니다. /app/res/values/strings.xml
파일을 엽니다.facebook_app_id
, fb_login_protocol_scheme
및 facebook_client_token
이름을 포함하여 string
요소를 추가하고 값을 앱 ID와 클라이언트 토큰으로 설정합니다. 예를 들어 앱 ID가 1234
이고 클라이언트 토큰이 56789
일 경우 코드는 다음과 같습니다. /app/manifest/AndroidManifest.xml
파일을 엽니다. meta-data
요소를 앱 ID와 클라이언트 토큰의 application
요소에 추가합니다. application
요소 내에 추가합니다. <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>
uses-permission
요소를 application
요소 뒤의 매니페스트에 추가합니다. uses-permission
요소를 application
요소 뒤의 매니페스트에 추가합니다. AndroidManifest.xml
파일에서 AutoLogAppEventsEnabled
플래그를 설정하여 앱 이벤트의 자동 로깅을 'true' 또는 'false'로 직접 설정할 수 있습니다.
LoginButton
을 추가하는 것입니다. LoginButton
은 LoginManager
에서 제공되는 기능을 감싸는 UI 요소입니다. 사용자가 버튼을 클릭하면 LoginManager
에 설정된 권한과 함께 로그인이 시작됩니다. Facebook 로그인은 외부 사용자가 사용하려면 고급 public_profile 권한이 필요합니다. 이 버튼은 로그인 상태를 따라가고 사용자의 인증 상태에 따라 올바른 텍스트를 표시합니다. CallbackManager.Factory.create
를 호출하여 로그인 응답을 처리할 callbackManager를 만듭니다. Login button
의 속성을 맞춤 설정하고 onCreate()
또는 onCreateView()
메서드에 콜백을 등록할 수 있습니다. 맞춤 설정할 수 있는 속성에는 LoginButton
에 대한 권한, LoginBehavior
, DefaultAudience
및 ToolTipPopup.Style
이 포함되어 있습니다. 예를 들면 다음과 같습니다. private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call loginButton.setFragment(this); // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginManager
또는 LoginButton
으로 콜백을 등록해야 합니다. LoginButton
으로 콜백을 등록하는 경우 로그인 관리자에서 콜백을 등록하지 않아도 됩니다. onCreate()
메서드에 LoginManager 콜백을 추가합니다. callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginResult
매개변수에 새로운 AccessToken
과 최근에 부여되거나 거부된 권한이 포함됩니다. registerCallback
을 사용할 필요가 없습니다. 아래 설명된 AccessTokenTracker
클래스와 함께 현재 액세스 토큰의 변경 내용을 따르도록 선택할 수 있습니다. onActivityResult
메서드에서 callbackManager.onActivityResult
를 호출하여 로그인 결과를 callbackManager
를 통해 LoginManager
에 전달합니다. AndroidX 활동 또는 프래그먼트를 사용하고 있는 경우 'onActivityResult'를 재정의할 필요가 없습니다.
onActivityResult
를 callbackManager
에 전달해야 합니다. LoginManager
는 로그인한 사용자의 현재 AccessToken
및 Profile
을 설정합니다. Facebook SDK는 공유된 기본 설정에 이 데이터를 저장하고 세션 시작 시에 설정합니다. AccessToken.getCurrentAccessToken()
및 Profile.getCurrentProfile()
을 확인하여 사용자가 이미 로그인했는지 확인할 수 있습니다. AccessToken.getCurrentAccessToken
을 읽어들일 수 있습니다. Activity
의 onCreate
메서드에서 유효성을 확인해야 합니다./app/manifest/AndroidManifest.xml
파일의 queries
요소에 추가하세요. 빠른 로그인 기능은 다음 코드를 통해 활성화할 수 있습니다. LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });