•  


Android - Facebook 로그인 - 文書 - Meta for Developers

2021年 10月 5日부터 Facebook 로그인은 使用者 認證에 더 以上 Android 임베디드 브라우저(웹 보기)를 支援하지 않습니다.

이 使用 中斷에 對한 背景 情報는 Android 임베디드 브라우저에서 FB 로그인 認證 支援 中斷 블로그 揭示物을 參照하세요.

웹 보기 使用을 中斷하는 代身 맞춤 設定 탭을 使用하는 것과 關聯된 內容은 Android 웹 보기 使用 中斷 을 參照하세요.

Android用 Facebook 로그인 - 빠른 始作

Android用 Facebook SDK를 使用하면 Facebook 로그인을 通해 Android 앱에 로그인할 수 있습니다. Facebook 計定으로 앱에 로그인하면 使用者는 開發者가 Facebook에서 本人 代身 情報를 가져오거나 作業을 遂行하도록 앱에 權限을 附與할 수 있습니다.

Facebook 로그인을 Android 앱에 統合하는 方法으로 보여주는 프로젝트의 例는 GitHub FBLoginSample 을 參照하세요.

아래 段階에 따라 Facebook 로그인을 앱에 追加하세요.

1. 로그인

Facebook에 로그인하여 앱을 만들거나 開發者로 登錄하세요.

2. Facebook 앱 다운로드

아래 버튼을 클릭하여 Facebook 앱을 다운로드합니다.

3. Facebook SDK 統合

Android用 Facebook 로그인 SDK는 Android用 Facebook SDK 의 構成 要素입니다. 프로젝트에서 Facebook 로그인 SDK를 使用하려면 Maven에 從屬되도록 만들거나 다운로드하세요. Android 11에서 變更 事項을 志願하려면 SDK 버전 8.1 以上을 使用하세요.

Maven 使用하기

  1. 프로젝트에서 your_app > Gradle Scripts (그래들 스크립트) > build.gradle (Project) 를 연 後 buildscript { repositories {}} 에 다음 貯藏所가 羅列되어 있는지 確認합니다.
    mavenCentral() 
    
  2. 프로젝트에서 your_app > Gradle Scripts (그래들 스크립트) > build.gradle (Module: app) 을 연 後 dependencies{} 섹션에 다음 具現 門을 追加하여 最新 버전의 Facebook 로그인 SDK를 使用합니다.
     implementation 'com.facebook.android:facebook-login:latest.release'
    
  3. 프로젝트를 빌드합니다.

4. 리소스 및 메니페스트 修正

Android用 Facebook SDK 버전 5.15 以上을 使用하는 境遇 Chrome 맞춤 탭에 活動 또는 인텐트 필터를 追加할 必要가 없습니다. 이 機能은 SDK에 包含되어 있습니다.

iOS用 Facebook SDK 16.3.1 및 Android用 Facebook SDK 16.3.0부터 韓國에서 앱에 FBLogin 키트를 使用하는 비즈니스와 連結된 앱에 對해 自動 앱 이벤트 로깅이 自動으로 비활성화됩니다. 앱 코드에서 이를 變更하거나 앱 대시보드나 이벤트 管理者의 앱 이벤트에서 토글을 통해 變更할 수 있습니다. AutoLogAppEventsEnabled 플래그와 토글의 값이 相衝하는 境遇, 自動 앱 이벤트 토글의 값을 따릅니다.

使用者의 Facebook 앱 ID 및 Chrome 맞춤 탭을 活性化하는 데 必要한 Facebook 앱 ID의 文字列을 만듭니다. 또한 FacebookActivity 를 Android 매니페스트에 追加합니다.
  1. /app/res/values/strings.xml 파일을 엽니다.
  2. facebook_app_id , fb_login_protocol_scheme facebook_client_token 이름을 包含하여 string 要素를 追加하고 값을 앱 ID 클라이언트 토큰 으로 設定합니다. 例를 들어 앱 ID가 1234 이고 클라이언트 토큰이 56789 일 境遇 코드는 다음과 같습니다.
    <string name="facebook_app_id">1234</string>
    <string name="fb_login_protocol_scheme">fb1234</string>
    <string name="facebook_client_token">56789</string>
    
    
  3. /app/manifest/AndroidManifest.xml 파일을 엽니다.
  4. meta-data 要素를 앱 ID와 클라이언트 토큰의 application 要素에 追加합니다.
    <application android:label="@string/app_name" ...>
        ...
       	<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
       	<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
    
  5. Facebook에 對한 活動, Chrome 맞춤 탭에 對한 活動 및 인텐트 필터를 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>
    
  6. uses-permission 要素를 application 要素 뒤의 매니페스트에 追加합니다.
    <uses-permission android:name="android.permission.INTERNET"/>
    
    
  7. (選擇 事項) 廣告 ID 權限 을 옵트아웃하려면 uses-permission 要素를 application 要素 뒤의 매니페스트에 追加합니다.
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
            
    
  8. AndroidManifest.xml 파일에서 AutoLogAppEventsEnabled 플래그를 設定하여 앱 이벤트의 自動 로깅을 'true' 또는 'false'로 直接 設定할 수 있습니다.

  9. 프로젝트를 빌드합니다.

5. 패키지 이름 및 基本 클래스를 앱과 連結

이 段階를 完了하려면 로그인 해야 합니다.

6. 앱龍 開發 및 릴리스 키 해시 提供

이 段階를 完了하려면 로그인 해야 합니다.

7. 앱에 對한 SSO 活性化

이 段階를 完了하려면 로그인 해야 합니다.

8. Facebook 로그인 버튼 追加

앱에 Facebook 로그인을 追加하는 가장 簡單한 方法은 SDK에서 LoginButton 을 追加하는 것입니다. ? LoginButton LoginManager 에서 提供되는 機能을 감싸는 UI 要素입니다. 使用者가 버튼을 클릭하면 LoginManager 에 設定된 權限과 함께 로그인이 始作됩니다. Facebook 로그인은 外部 使用者가 使用하려면 高級 public_profile 權限이 必要합니다. 이 버튼은 로그인 狀態를 따라가고 使用者의 認證 狀態에 따라 올바른 텍스트를 標示합니다.
Facebook 로그인 버튼을 追加하려면 먼저 레이아웃 XML 파일에 버튼을 追加합니다.
<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 

9. 콜백 登錄

이제 CallbackManager.Factory.create 를 呼出하여 로그인 應答을 處理할 callbackManager를 만듭니다.
callbackManager = CallbackManager.Factory.create();
버튼을 프래그먼트에 追加하는 境遇 프래그먼트를 使用하도록 活動도 업데이트해야 합니다. 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'를 再定義할 必要가 없습니다.

      @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
Facebook SDK 로그인 또는 공유와 統合한 모든 活動과 프래그먼트에서 onActivityResult callbackManager 에 傳達해야 합니다.

10. 로그인 狀態 確認

앱에서는 한 番에 使用者 한 名만 로그인할 수 있으며 LoginManager 는 로그인한 使用者의 現在 AccessToken Profile 을 設定합니다. Facebook SDK는 共有된 基本 設定에 이 데이터를 貯藏하고 세션 始作 詩에 設定합니다. AccessToken.getCurrentAccessToken() Profile.getCurrentProfile() 을 確認하여 使用者가 이미 로그인했는지 確認할 수 있습니다.
앱이 콜드 스타트에서 始作되는 境遇 앱의 북마크나 캐시에서 SDK를 使用하여 AccessToken.getCurrentAccessToken 을 읽어들일 수 있습니다. Activity onCreate 메서드에서 有效性을 確認해야 합니다.
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
  
그런 다음 나중에 맞춤 버튼의 OnClickListener 等에서 實際 로그인을 遂行할 수 있습니다.
      
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

11. 빠른 로그인 活性化

빠른 로그인은 모든 機器와 플랫폼에서 使用者를 Facebook 計定으로 로그인하도록 합니다. 使用者가 Android에 있는 앱에 로그인했다가 機器를 變更하는 境遇, 빠른 로그인은 로그인 方法을 選擇하게 하는 代身 Facebook 計定으로 로그인하도록 합니다. 이렇게 하면 重複 計定을 만들거나 로그인에 失敗할 憂慮가 없습니다. Android 11에서 變更 事項을 志願하려면 먼저 다음 코드를 /app/manifest/AndroidManifest.xml 파일의 queries 要素에 追加하세요.
  
<queries> <package android:name="com.facebook.katana" /> </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 } });   

다음 段階

祝賀합니다. Android 앱에 Facebook 로그인이 追加되었습니다! 仔細한 高級 가이드는 Facebook의 다른 文書 페이지를 確認하세요.
使用者가 Facebook에서 自身의 데이터를 削除해 달라고 要請할 境遇 이 要請에 應答하기 위한 데이터 削除 콜백을 具現하세요.
使用者의 액세스 토큰 및 프로필을 追跡하세요.
앱에서 Facebook 로그인을 통해 액세스할 수 있는 데이터를 管理하세요.
Facebook 로그인을 統合하는 데 問題가 있나요? 一般的인 問題 및 解決 方法의 리스트를 確認하세요.
Facebook 로그인을 使用하는 사람들에게 要請하는 Facebook 데이터에 따라 出市 前에 檢收를 위해 앱을 提出해야 할 수 있습니다.
나만의 로그인 플로를 빌드하려는 境遇 로그인 플로 直接 빌드 를 參照하세요.
- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본