[Android] Facebook 로그인 구현하기
[Android] Facebook 로그인 구현하기
AndroidManifest.xml
1
2
3
4
5
6
7
8
9
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="페이스북APP_ID"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
<provider android:authorities="com.facebook.app.FacebookContentProvider페이스북APP_ID"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
Login 요청 버튼 구현
Arrays.asList를 이용하여 권한을 추가로 요청하실 수 있습니다. 일부 권한은 페이스북 앱 리뷰를 통과해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void isLoginFacebook() {
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "email"));
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("TAG", "페이스북 토큰 -> " + loginResult.getAccessToken().getToken());
Log.d("TAG","페이스북 UserID -> " + loginResult.getAccessToken().getUserId());
}
@Override
public void onCancel() {
Log.d("TAG","취소됨");
}
@Override
public void onError(FacebookException e) {
e.printStackTrace();
}
});
}
사용자 정보 획득
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
GraphRequest request = GraphRequest.newMeRequest( 엑세스토큰 ,
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
Log.d("TAG","페이스북 로그인 결과" + response.toString());
try {
String email = object.getString("email"); // 이메일
String name = object.getString("name"); // 이름
String gender = object.getString("gender"); // 성별
Log.d("TAG","페이스북 이메일 -> " + email);
Log.d("TAG","페이스북 이름 -> " + name);
Log.d("TAG","페이스북 성별 -> " + gender);
} catch (Exception e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender");
request.setParameters(parameters);
request.executeAsync();
callbackManager 호출
1
2
3
4
5
6
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 페이스북 로그인 결과를 콜백매니저에 담는다
callbackManager.onActivityResult(requestCode, resultCode, data);
}
This post is licensed under CC BY 4.0 by the author.