우선 Facebook SDK 다운!
다운받은 SDK 압축 파일 안의
Facebook Frameworks 와 FBUserSettingsViewResources.bundle 을 xcode의 Frameworks 에 추가한다.
Xcode에서 제공하는 (4 버젼 이후만 가능하다고 함)
Social.framework 와 Adsupport.framework 추가한다.
Facebook에 개발자로 로그인하여 Facebook App Id 를 받아
내가만든 App 에 입력한다.
AppDelegate.h 에 추가한 코드
#import <FacebookSDK/FacebookSDK.h>
extern NSString *const FBSessionStateChangedNotification;
- (BOOL) openSessionWithAllowLoginUI:(BOOL)allowLoginUI;
- (void) sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error;
AppDelegate.m 에 추가한 코드
#import <FacebookSDK/FacebookSDK.h>
NSString *const FBSessionStateChangedNotification = @"본인의 App Bundle Identifier:FBSessionStateChangedNotification";
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[FBSettings setDefaultAppID:@"202225256635972"];//이거때문에 엄청난 삽질을 함.
}
/* For FaceBookLogin
by YG.Seo 2014.1.16 */
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [FBSession.activeSession handleOpenURL:url];
}
/* For FaceBookLogin
by YG.Seo 2014.1.16 */
- (BOOL) openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
return [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:allowLoginUI completionHandler:^(FBSession *session,FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
}
- (void)sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
if(!error) {
NSLog(@"Facebook User session found");
}
break;
case FBSessionStateClosed:
NSLog(@"Facebook SessionStateClosed");
break;
case FBSessionStateClosedLoginFailed:
NSLog(@"SessionStateColsedLoginFailed");
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
[[NSNotificationCenter defaultCenter] postNotificationName:FBSessionStateChangedNotification object:session];
if(error) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}
ViewController.h 추가한 코드
#import <FacebookSDK/FacebookSDK.h>
@interface ...
{
NSString *m_strFacebookAccount;
...
}
@property (nonatomic, retain)NSString *m_strFacebookAccount;
/* For FacebookLogin
by YG.Seo 2014.1.16 */
- (IBAction)OnTouchUpFacebookLogin:(id)sender;
- (void)setFacebookID;
ViewController.m 추가한 코드
#import <FacebookSDK/FacebookSDK.h>
@synthesize m_strFacebookAccount;
- (void)viewDidLoad
{
[super viewDidLoad];
/* For FacebookLogin
by YG.Seo 2014.1.16 */
AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
[appDelegate openSessionWithAllowLoginUI:NO];
[self setFacebookID];
}
/*Facebook 버튼 클릭
by YG.Seo 2014.1.16 */
- (IBAction) OnTouchUpFacebookLogin:(id)sender
{
if (FBSession.activeSession.state == FBSessionStateOpen || FBSession.activeSession.state == FBSessionStateOpenTokenExtended) {
[FBSession.activeSession closeAndClearTokenInformation];
} else {
[FBSession openActiveSessionWithReadPermissions:@[@"basic_info"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
AppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate sessionStateChanged:session state:state error:error];
}];
}
[self setFacebookID];
}
- (void)setFacebookID
{
[FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id<FBGraphUser> result, NSError *error) {
if (!error) {
m_strFacebookAccount = result.username;
NSLog(@"user info: %@", result.username);
} else {
NSLog(@"Facebook connection Error!!");
}
}];
}
역시... 하고나면 별거없다.
우선 ios 쪽 object C 언어가 생소해서 시간도 꽤 걸렸으나,
별거 없네. 안드로이드 GCM 하는 느낌???
암튼 그냥 뒤적이며 하면 됩니다.
자료는 인터넷에 많~아요
'Computer Programming > Object C' 카테고리의 다른 글
[ObjectC]ios GooglePlus Login 구현하기 /GooglePlus SDK (0) | 2014.01.20 |
---|---|
[ObejctC]InterOP(ios 어플리케이션간 통신 방법) (0) | 2014.01.20 |
[ObjectC]object C 기본 문법 정리 (0) | 2014.01.10 |
[ObjectC]@property 와 @synthesize 사용 및 이해 (0) | 2014.01.10 |
[ObjectC]prepareForSegue 사용하여 다음 view로 데이터 넘기기 (0) | 2014.01.09 |