본문 바로가기
개발/안드로이드

페이스북(Facebook) 로그인 연동 with 안드로이드 스튜디오

by darksilber 2016. 6. 2.
반응형

출처 - http://blog.naver.com/PostView.nhn?blogId=juseyo86&logNo=220601836565&categoryNo=2&parentCategoryNo=18&viewDate=&currentPage=&postListTopCurrentPage=&isAfterWrite=true

 

 

 

안드로이드 스튜디오에서 페이스북 로그인 기능 연동을 정리해보도록 할게요

페이스북 연동은 구글에도 정보가 많아서 제가 알아볼수 있게  필수적인 부분만 정리된점 이해해주세요.

1. build.gradle(Module:app) 로 이동

dependencies {...}

위에 

    repositories {
       mavenCentral()
    } 

추가해주세요

2. dependencies 에
compile 'com.facebook.android:facebook-android-sdk:4.8.2' 추가

3.  https://developers.facebook.com/ 

페이스북 사이트로 가서 앱 등록을 해야됩니다.



프로젝트를 만들어서 AppID 발급을 받아야 됩니다. 



App ID 는 기억을 잘 해두세요 앱에서 쓰입니다..

오른쪽 하단에 Getting Started 버튼을 클릭해서 Android 플랫폼 추가해주세요


그리고 해당 패키지 이름과 메인 액티비티 클래스 이름을 입력하고

Key Hashes를 입력해주셔야 되요 .

Andorid 에서는 개발시 키를 2개를 사용하는데요

개발시 사용되는 디버그키 , 실제 배포되는 사용키 배포키

둘다 생성해서 등록을 해주시면 편하시겠죠!?

debug 키 위치를 확인한다.

C:\Users\Administrator\.android 폴더에 debug.keystore 파일이 있는지 확인한다.

keytool로 구하는 방법 소스상에서 구하는 방법이 있습니다.

소스에서 구하는 방법은 다음과 같습니다 .


public static final String getKeyHash(Context context) {
   try {
       PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(),
       PackageManager.GET_SIGNATURES);
       for (Signature signature : info.signatures) {
           MessageDigest md = MessageDigest.getInstance("SHA");
           md.update(signature.toByteArray());
           String keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
           Logger.d(TAG + "KeyHash:%s", keyHash);
           return keyHash;
       }
      
   } catch (NameNotFoundException e) {
                 Logger.d(TAG + "getKeyHash Error:%s", e.getMessage());
   } catch (NoSuchAlgorithmException e) {
                 Logger.d(TAG + "getKeyHash Error:%s", e.getMessage());
   }   
   return "";
}


다음으로 res -> values -> strings.xml 로 이동합니다.

<string name="app_id">YOUR APP ID</string>

* 실제 페이스북개발자에 등록된 프로젝트 app_id의 값을 입력합니다.

AndroidManifest.xml 에 등록해야될 부분입니다.

 <uses-permission android:name="android.permission.INTERNET"/>

인터넷 요청 퍼미션 입력은 필수입니다.

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />

메타 데이타 입력

<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

팝업화면 등록도 해주셔야 되요 .

버튼 사용할 xml 파일에 페이스북 제공하는 버튼을 달아주세요

<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:layout_marginTop="10dip"/>


 Fragment에서 사용해봤어요

전역변수
private CallbackManager callbackManager = null;
private AccessTokenTracker accessTokenTracker = null;
private com.facebook.login.widget.LoginButton loginButton = null;

private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
Profile profile = Profile.getCurrentProfile();
Toast.makeText(getActivity().getApplicationContext(), loginResult.getAccessToken().getUserId(), Toast.LENGTH_LONG).show();
// Toast.makeText(getActivity().getApplicationContext(), loginResult.getAccessToken().getToken(), Toast.LENGTH_LONG).show();
}

@Override
public void onCancel() {
Toast.makeText(getActivity().getApplicationContext(), "User sign in canceled!", Toast.LENGTH_LONG).show();
}

@Override
public void onError(FacebookException e) {

}
};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getActivity().getApplicationContext());
callbackManager = CallbackManager.Factory.create();
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
// App code
MLog.i("eNuri", "Current Token : " + currentAccessToken);
}
};



accessTokenTracker.startTracking();
}

@Override
public void onStop() {
super.onStop();
accessTokenTracker.stopTracking();
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
LoginButton loginButton = (LoginButton)view.findViewById(R.id.login_button);
loginButton.setReadPermissions("public_profile", "user_friends");
loginButton.setFragment(this);
loginButton.registerCallback(callbackManager, callback);
}



@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);

}

 
차근차근 따라하시면 어렵지 않으실거에요.

혹시 모르겠으면

https://www.simplifiedcoding.net/login-with-facebook-android-studio-using-facebook-sdk-4/

반응형

댓글