[Android] Facebook 로그인 구현하기

AndroidManifest.xml #

1<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="페이스북APP_ID"/>
2<activity android:name="com.facebook.FacebookActivity"
3  android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
4  android:theme="@android:style/Theme.Translucent.NoTitleBar"
5  android:theme="@android:style/Theme.Translucent.NoTitleBar"
6  android:label="@string/app_name" />
7<provider android:authorities="com.facebook.app.FacebookContentProvider페이스북APP_ID"
8  android:name="com.facebook.FacebookContentProvider"
9  android:exported="true" />

Login 요청 버튼 구현 #

Arrays.asList를 이용하여 권한을 추가로 요청하실 수 있습니다. 일부 권한은 페이스북 앱 리뷰를 통과해야 합니다. {: .prompt-info }

 1private void isLoginFacebook() {
 2  FacebookSdk.sdkInitialize(getApplicationContext());
 3  callbackManager = CallbackManager.Factory.create();
 4  LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "email"));
 5  LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
 6    @Override
 7    public void onSuccess(LoginResult loginResult) {
 8      Log.d("TAG", "페이스북 토큰 -> " + loginResult.getAccessToken().getToken());
 9      Log.d("TAG","페이스북 UserID -> " + loginResult.getAccessToken().getUserId());
10    }
11
12    @Override
13    public void onCancel() {
14      Log.d("TAG","취소됨");
15    }
16
17    @Override
18    public void onError(FacebookException e) {
19      e.printStackTrace();
20    }
21  });
22}

사용자 정보 획득 #

 1GraphRequest request = GraphRequest.newMeRequest( 엑세스토큰 ,
 2  new GraphRequest.GraphJSONObjectCallback() {
 3    @Override
 4    public void onCompleted(JSONObject object, GraphResponse response) {
 5      Log.d("TAG","페이스북 로그인 결과" + response.toString());
 6
 7      try {
 8        String email = object.getString("email");       // 이메일
 9        String name = object.getString("name");         // 이름
10        String gender = object.getString("gender");     // 성별
11
12        Log.d("TAG","페이스북 이메일 -> " + email);
13        Log.d("TAG","페이스북 이름 -> " + name);
14        Log.d("TAG","페이스북 성별 -> " + gender);
15
16      } catch (Exception e) {
17        e.printStackTrace();
18      }
19    }
20  });
21Bundle parameters = new Bundle();
22parameters.putString("fields", "id,name,email,gender");
23request.setParameters(parameters);
24request.executeAsync();

callbackManager 호출 #

1@Override
2  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
3    super.onActivityResult(requestCode, resultCode, data);
4    // 페이스북 로그인 결과를 콜백매니저에 담는다
5    callbackManager.onActivityResult(requestCode, resultCode, data);
6  }
Advertisement