-
Notifications
You must be signed in to change notification settings - Fork 5
Facebook Guide
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 2. Facebook SDK for Android에서 SDK를 다운로드합니다.
- 다운로드한 SDK를 적당한 위치에 압축을 풀어줍니다.
-
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 값이 결과로 나옵니다.
-
이 값은 앱 생성을 위해 사용되니 잘 적어놓습니다.
※ 개발시에는 Debug용 Key의 Hash만 얻어내면 되지만, 배포할때는 배포용 Key의 Hash도 필요합니다. 등록한 Key와 앱에 설정된 인증키(keystore)가 다르면 Facebook에서 오류가 나옵니다.
- Facebook에 로그인을 하면 오른쪽 상단에 Dropdown 메뉴가 있습니다.(Profile 이름 옆에)
- Settings 메뉴를 선택하고, 왼쪽 세션에 Developer Settings를 선택하면 Developer 등록창이 나타납니다. 등록을 마칩니다.
- 이제 Step 3에서 얻어낸 Key Hash를 입력하면 개발자 등록이 완료됩니다.
- App Dashboard 페이지로 이동하여, '새 앱 만들기(Create New App)'를 선택합니다.
- 나타나는 '새 앱 만들기(Create New App)'창에 원하는 이름을 입력해줍니다.
- 생성이 완료되면 아래와 같은 App ID가 나옵니다. 이 App ID는 개발하시는 애플리케이션에서 사용될 것이므로 기억해 둡니다.
- 이제 '앱 수정(Edit App)'을 선택합니다.
- '네이티브 Android 앱(Native Android App)'세션을 엽니다. Key Hash란에 Step2에서 얻어낸 Key Hash를 입력하고 저장합니다.
-
Eclipse에서 File > New > Project를 선택하여 새로운 Android 프로젝트를 생성합니다.
-
생성된 프로젝트에서 오른쪽을 클릭하여 "properties"를 선택하고, Android탭을 선택하여, Step 2에서 다운로드 받은 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>
- 다시 Facebook의 App Dashboard로 돌아가 생성한 Android 앱의 package name과 Facebook의 로그인을 시도할 Activity의 Class name을 등록합니다.
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);
}
...
}