Skip to content
Brad edited this page Jul 18, 2013 · 3 revisions

baas.io는 Facebook으로 로그인/가입하는 기능을 제공하고 있습니다. 이 기능을 이용하기 위해서는 Facebook의 Access token이 필요합니다.

이 가이드를 통해 Facebook SDK for Android v3.0을 이용하여 Facebook의 Access token을 얻는 방법을 가이드합니다. 더 자세한 내용은 Facebook SDK for Android 페이지를 참고바랍니다.

관련 샘플은 baas.io-sample-project v0.8.1버전 이후부터 제공되고 있으니 참고 바랍니다.


## API Key 발급부터 로그인까지

Step 1. Facebook 계정이 필요합니다. 계정이 없다면 가입해주세요.

Step 2. Facebook SDK for Android에서 SDK를 다운로드합니다.

  • 다운로드한 SDK를 적당한 위치에 압축을 풀어줍니다.

Step 3. Facebook에 앱을 생성하기 위해 Key Hash를 얻어냅니다.

  • Debug용 Key의 Hash를 얻기 위해, 아래와 같은 명령어를 prompt에서 실행시킵니다. Windows에서 개발하시는 분들은 openssl 설치가 필요합니다.

    • OSX

        keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
      
    • Windows

        keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
      
  • 실행시키면 비밀번호를 묻는데, 'android'라고 입력하면 30글자로 된 Hash 값이 결과로 나옵니다.

<Hash Key>

  • 이 값은 앱 생성을 위해 사용되니 잘 적어놓습니다.

    ※ 개발시에는 Debug용 Key의 Hash만 얻어내면 되지만, 배포할때는 배포용 Key의 Hash도 필요합니다. 등록한 Key와 앱에 설정된 인증키(keystore)가 다르면 Facebook에서 오류가 나옵니다.

Step 4. Facebook 개발자 설정을 합니다.

  • Facebook에 로그인을 하면 오른쪽 상단에 Dropdown 메뉴가 있습니다.(Profile 이름 옆에)

<DropDown>

  • Settings 메뉴를 선택하고, 왼쪽 세션에 Developer Settings를 선택하면 Developer 등록창이 나타납니다. 등록을 마칩니다.

<개발자등록>

  • 이제 Step 3에서 얻어낸 Key Hash를 입력하면 개발자 등록이 완료됩니다.

<Key Hash등록>

Step 5. Facebook 앱을 생성합니다.

  • App Dashboard 페이지로 이동하여, '새 앱 만들기(Create New App)'를 선택합니다.

<새 앱 만들기>

  • 나타나는 '새 앱 만들기(Create New App)'창에 원하는 이름을 입력해줍니다.

<새 앱 만들기>

  • 생성이 완료되면 아래와 같은 App ID가 나옵니다. 이 App ID는 개발하시는 애플리케이션에서 사용될 것이므로 기억해 둡니다.

<App ID>

  • 이제 '앱 수정(Edit App)'을 선택합니다.

<새 앱 만들기>

  • '네이티브 Android 앱(Native Android App)'세션을 엽니다. Key Hash란에 Step2에서 얻어낸 Key Hash를 입력하고 저장합니다.

<네이티브 Android 앱>

Step 6. 새로운 Android 프로젝트를 생성합니다.

  • Eclipse에서 File > New > Project를 선택하여 새로운 Android 프로젝트를 생성합니다.

  • 생성된 프로젝트에서 오른쪽을 클릭하여 "properties"를 선택하고, Android탭을 선택하여, Step 2에서 다운로드 받은 Facebook SDK를 선택해줍니다.

    <Facebook SDK 연결>

  • res/values 위치에 있는 string.xml 파일에 아래와 같이 app_id라는 string 값을 추가하고, Step 5에서 얻은 Facebook App ID를 넣어줍니다.

      <resources>
      	<string name="app_name">baas.io</string>
          
      	...
    
          <!-- Facebook app_id -->
          <string name="app_id">497906953566757</string>
    
      	...
    
      </resources>
    
  • AndroidManifest.xml파일을 열어 'permission'과 'meta-data'정보, Facebook의 로그인 화면인 LoginActivity를 등록해 줍니다.

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="YOUR_PACKAGE_NAME"
          android:versionCode="YOUR_VERSION_CODE"
          android:versionName="YOUR_VERSION_NAME" >
      
          ...
      
          <uses-permission android:name="android.permission.INTERNET" />
          
      	...
    
          <application
              android:name=".BaasioApplication"
              android:icon="@drawable/ic_launcher"
              android:label="@string/app_name"
              android:theme="@style/Theme.baas" >
              
      		...
              
      		<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
              <activity
                  android:name="com.firstandroidapp.MainActivity"
                  android:label="@string/title_activity_facebook_sample"
                  android:theme="@style/baas_AuthStyle" >
              </activity>
              <activity
                  android:name="com.facebook.LoginActivity">            
              </activity>
              
              ...
    
          </application>
      
      </manifest>
    

Step 7. 생성한 Android 앱의 정보를 Facebook에 입력합니다.

  • 다시 Facebook의 App Dashboard로 돌아가 생성한 Android 앱의 package name과 Facebook의 로그인을 시도할 Activity의 Class name을 등록합니다.

<앱 등록>

Step 8. Facebook 로그인에 성공하면 Facebook의 Access token을 얻어낼 수 있습니다.

public class MainActivity extends SherlockFragmentActivity {

	...

	@Override
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

		// start Facebook Login
		Session.openActiveSession(this, true, new Session.StatusCallback() {
	
	            // callback when session changes state
	            @Override
	            public void call(Session session, SessionState state, Exception exception) {
	                if (session.isOpened()) {
	                    // Facebook 로그인 성공
						String accessToken = session.getAccessToken();

						BaasioUser.signInViaFacebookInBackground(mContext, accessToken,
                            new BaasioSignInCallback() {

                                @Override
                                public void onException(BaasioException e) {
                                    // baas.io 로그인 실패
                                }

                                @Override
                                public void onResponse(BaasioUser response) {
                                    // baas.io 로그인 성공
                                }
                            });
	                }
	            }
	        });
	}

	...

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

        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }

	...
}
Clone this wiki locally