바로 직전에 카카오톡 로그인 구현을 다루었습니다.
그렇다면 가장 많이 사용하는 페이스북은 어떨까요??
권한 관련 이슈가 있긴하지만 카카오톡보다 훠~~얼씬더 간단합니다.
하지만 페이스북 조금다른게 토큰요청후 그토큰을 이용하여 graph api 로 사용자 정보를 다시 조회해야합니다.
물론 모든건 페이스북 개발자센터에 다~ 나와있습니다.
본 예제는 따로 샘플없이 다룹니다.
본 예제는 로그인요청 버튼을 페이스북에서 제공하는게 아닌 커스텀하여 사용할 수 있도록 구현합니다.
카카오톡을 연동하고 싶으시면 아래 게시물을 참조하세요
[Android] 안드로이드 카카오톡 로그인 10초만에 구현하기 ( Kakao Login )
1. AndroidManifest.xml
<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:label="@string/app_name" />
<provider android:authorities="com.facebook.app.FacebookContentProvider페이스북APP_ID"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
2. 로그인요청 버튼 구현
* Arrays.asList 를 이용하여 권한을 추가로 요청하실 수 있습니다. 일부 권한은 페이스북 앱리뷰를 통과해야하니 참고하세요
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();
}
});
}
3. 사용자 정보 획득
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();
4. callbackManager호출
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 페이스북 로그인 결과를 콜백매니저에 담는다
callbackManager.onActivityResult(requestCode, resultCode, data);
}
'개발 > Android 개발 주저리' 카테고리의 다른 글
Android 핫스팟(테더링)을 스마트하게 쓰기위한 모와(Mowa) 개발기 (13) | 2017.09.14 |
---|---|
[Android] 비인증 SSL인증서 사용시 Android Studio에서 무시하고 clone하기 (0) | 2016.04.21 |
HttpURLConnection 사용시 참고사항 (0) | 2015.12.21 |
[Android] 안드로이드6.0 권한 처리하기 ( checkSelfPermission ) (5) | 2015.10.22 |
[Android] 갤러리에서 랜덤으로 이미지 1장 가져오기 (1) | 2015.09.08 |