Skip to content

Using facebook account to # or up

Kwon, oh-sang edited this page Jul 16, 2013 · 5 revisions

Using Facebook account to # and Up

baas.io는 페이스북 계정으로 회원가입 및 로그인이 가능하다.

이 글에서는 Facebook iOS SDK 를 이용하여 access token을 발급 받아 baas.io에 로그인 하는 방법에 대해서 알아보도록 하겠다.

  • 이 문서가 작성될 당시의 SDK 정보는 v3.1.1 as of Oct. 3, 2012.이다

Create a Facebook App

Facebook App Dashboard에서 아래와 같이 facebook 앱을 만들어 준다.

FB_createApp

Native iOS App을 체크한 후 Bundle ID에 당신의 Bundle Identifier를 입력하고, Facebook 로그인도 활성화 시킨다.

FB_configApp

  • Bundle Identifier는 다음에 또 나온다. 몰라도 일단 넘어가자.

XCode 환경 설정

.plist 파일에서 Bundle Identifier를 위에 입력한 값과 동일하게 셋팅해줍니다.

Xcode_configApp_1

또한 FacebookAppID값을 Facebook App Dashboard 에서 발급 받았던 App ID로 셋팅한 후

[URL types] - [URL Schemes]에 아래와 같이 App ID앞에 fb를 붙여 입력합니다.

Xcode_configApp_2

[Build Pharses] - [Linked Frameworks and Libraries]에 facebook SDK외에 AdSupport, Accounts and Social 3개의 프레임워크를 추가해 줍니다.

Xcode_addFramework

[Build Setting] - [Other Linker Flags]에 -lsqlite3.0를 추가합니다.

Xcode_otherLink

Facebook access token 받기

AppDelegate에 아래의 내용을 추가해 줍니다.

로그인이 성공하면 access token이 전달 됩니다.

#import <FacebookSDK/FacebookSDK.h>

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [FBSession.activeSession handleOpenURL:url];
}

- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
{
    switch (state) {
        case FBSessionStateOpen:
            if (!error) {
                // We have a valid session
                NSLog(@"session : %@", session.accessToken);
            }
            break;
        case FBSessionStateClosed:
        case FBSessionStateClosedLoginFailed:
            // Once the user has logged in, we want them to
            // be looking at the root view.
            [FBSession.activeSession closeAndClearTokenInformation];
            break;
        default:
            break;
    }
    
    if (error) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                            message:error.localizedDescription
                                                           delegate:nil
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
        [alertView show];
    }
}

- (void)openSession:(BOOL)allowLoginUI
{
    [FBSession openActiveSessionWithReadPermissions:nil
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                                     [self sessionStateChanged:session state:state error:error];
                                                 }];
}

그 다음 원하는 뷰에 아래와 같이 로그인 / 로그아웃을 구현하면 됩니다.

- (void)logout
{
    [[FBSession activeSession] closeAndClearTokenInformation];
}

- (void)login
{
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate openSession:YES];
}

baas.io 로그인

baas.io에 facebook에서 발급 받은 토큰을 넘겨 baas.io 에 로그인, 회원가입을 합니다.

// 회원가입
[BaasioUser #ViaFacebookInBackground:session.accessToken
                                successBlock:^(void){
                                    NSLog(@"success - ");
                                }
                                failureBlock:^(NSError *error){
                                    NSLog(@"error - %@", error.localizedDescription);
                                }];
// 로그인
[BaasioUser signInViaFacebookInBackground:session.accessToken
                                successBlock:^(void){
                                    NSLog(@"success - ");
                                }
                                failureBlock:^(NSError *error){
                                    NSLog(@"error - %@", error.localizedDescription);
                                }];

참고자료

이 문서에서 사용한 샘플 코드 입니다.

(반드시 최신의 facebook, baas.io sdk를 첨부하여 사용하세요.)

https://github.com/baasio/baasio-facebookLogin-iOS

Getting Started with the Facebook SDK for iOS

http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/3.1/

Facebook iOS SDK Tutorial - Authenticate

http://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/authenticate/