Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • Integrate Facebook SDK in ios

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 528
    Comment on it

    Hi,

    Download Facebook SDK from following link- https://developers.facebook.com/docs/ios

    Add SDK to your project. This code will help you login and get user data as well fetch friend list from specific account.

    FBManager - Create a file and write the following content in FBManager.h

    #import <Foundation/Foundation.h>
    #import <FacebookSDK/FacebookSDK.h>
    
    @interface MyFBManager : NSObject{
    
        void (^completionBlock)(id data, BOOL success);
    
    }
    
    
    + (MyFBManager *)sharedManager;
    
    - (void)loginToFB:(void(^)(id data, BOOL result))block;
    
    - (void)getUserBasicData:(void(^)(id userValue, BOOL result))block;
    
    - (void)getMyFBFriends:(void(^)(id friends, BOOL result))block;
    
    - (void)getMyFBPictures:(void(^)(id data, BOOL result))block;
    
    - (BOOL)isAlreadyLoggedIn;
    
    - (void)logoutFromFB:(void(^)(id data, BOOL result))block;
    
    @end
    

    FBManager.m

    #import "MyFBManager.h"
    
    
    @implementation MyFBManager
    
    static MyFBManager *myFBManager =  nil;
    
    + (MyFBManager *)sharedManager{
    
        if (!myFBManager) {
    
            myFBManager = [[MyFBManager alloc]init];
        }
    
        return myFBManager;
    }
    
    
    - (BOOL)isAlreadyLoggedIn{
    
        return [FBSession activeSession].accessTokenData.accessToken.length?YES:NO;
    }
    
    - (void)loginToFB:(void(^)(id data, BOOL result))block{
    
        NSLog(@"Login in to FB");
    
        if ([[FBSession activeSession] isOpen]) {
    
            NSLog(@"session is active");
    
            block([FBSession activeSession].accessTokenData.accessToken, YES);
        }
        else{
    
            [FBSession openActiveSessionWithReadPermissions:[NSArray arrayWithObjects:@"email",@"user&#95;location",@"user&#95;groups", nil]  allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
    
    
    
                if (error) {
                    NSLog(@"errror==%ld==%@",(long)error.code,error.debugDescription);
                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                                    message:error.localizedDescription
                                                                   delegate:nil
                                                          cancelButtonTitle:@"OK"
                                                          otherButtonTitles:nil];
                    [alert show];
                    // if otherwise we check to see if the session is open, an alternative to
                    // to the FB&#95;ISSESSIONOPENWITHSTATE helper-macro would be to check the isOpen
                    // property of the session object; the macros are useful, however, for more
                    // detailed state checking for FBSession objects
    
                    block(nil, YES);
    
                } else if (FB&#95;ISSESSIONOPENWITHSTATE(status)) {
                    // send our requests if we successfully logged in
                    //                                              [self sendRequests];
    
    
    
                    NSLog(@"access token is== %@", session.accessTokenData.accessToken);
    
                    block(session.accessTokenData.accessToken, YES);
    
                }
    
            }];
        }
    
    
    }
    
    
    
    
    - (void)sessionStateChanged:(FBSession *)session state:(FBSessionState) state error:(NSError *)error
    {
        // If the session was opened successfully
        if (!error && state == FBSessionStateOpen){
            NSLog(@"Session opened");
    
    //        [self getUserBasicData];
            return;
        }
        if (state == FBSessionStateClosed || state == FBSessionStateClosedLoginFailed){
            // If the session is closed
            NSLog(@"Session closed");
            // Show the user the logged-out UI
            //        [self userLoggedOut];
        }
    
        // Handle errors
        if (error){
            NSLog(@"Error");
            NSString *alertText;
            NSString *alertTitle;
            // If the error requires people using an app to make an action outside of the app in order to recover
            if ([FBErrorUtility shouldNotifyUserForError:error] == YES){
                alertTitle = @"Something went wrong";
                alertText = [FBErrorUtility userMessageForError:error];
    
                //            [self showMessage:alertText withTitle:alertTitle];
    
            } else {
    
                // If the user cancelled login, do nothing
                if ([FBErrorUtility errorCategoryForError:error] == FBErrorCategoryUserCancelled) {
                    NSLog(@"User cancelled login");
    
                    // Handle session closures that happen outside of the app
                } else if ([FBErrorUtility errorCategoryForError:error] == FBErrorCategoryAuthenticationReopenSession){
                    alertTitle = @"Session Error";
                    alertText = @"Your current session is no longer valid. Please log in again.";
                    //                [self showMessage:alertText withTitle:alertTitle];
    
                    // For simplicity, here we just show a generic message for all other errors
                    // You can learn how to handle other errors using our guide: https://developers.facebook.com/docs/ios/errors
                } else {
                    //Get more error information from the error
                    //                NSDictionary *errorInformation = [[[error.userInfo objectForKey:@"com.facebook.sdk:ParsedJSONResponseKey"] objectForKey:@"body"] objectForKey:@"error"];
    
                    // Show the user an error message
                }
            }
            // Clear this token
            [FBSession.activeSession closeAndClearTokenInformation];
            // Show the user the logged-out UI
            //        [self userLoggedOut];
        }
    }
    
    -(void)getUserBasicData:(void(^)(id userValue, BOOL result))block
    {
    
        NSLog(@"getting details here");
    
        if (![[FBSession activeSession] isOpen]){
    
            [[[UIAlertView alloc]initWithTitle:@"Please Login" message:@"Login to FB first" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];
            block(nil, NO);
            return;
        }
    
        [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
         {
             block(result, error?NO:YES);
         }];
    
    }
    
    
    - (void)getMyFBFriends:(void(^)(id friends, BOOL result))block{
    
        [FBRequestConnection startForMyFriendsWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
    
    
            block(result, error?NO:YES);
    
        }];
    }
    
    
    - (void)uploadTheImageToFB:(UIImage *)image withTitle:(NSString *)title description:(NSString *)description completionBlock:(void(^)(id responseData, BOOL result))block{
    
    
        //  Uploading image to user's photos on Facebook
        NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:[FBSession activeSession].accessTokenData.accessToken,@"access&#95;token",description, @"message",nil];
        if (image) {
            [params setObject:image forKey:@"source"];
        }
    
        [FBSession setActiveSession:[FBSession activeSession]];
    
        [FBRequestConnection startWithGraphPath:@"me/photos"
                                     parameters:params HTTPMethod:@"POST"
                              completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
    
                                  block(result, error?NO:YES);
    
                              }];
    
    }
    
    
    - (void)getMyFBPictures:(void(^)(id data, BOOL result))block{
    
        [FBRequestConnection startWithGraphPath:@"/me/photos"
                                     parameters:nil
                                     HTTPMethod:@"GET"
                              completionHandler:^(
                                                  FBRequestConnection *connection,
                                                  id result,
                                                  NSError *error
                                                  ) {
    
                                  block(result, error?NO:YES);
    
                              }];
    }
    
    
    
    
    -(void)getMyFBGroups:(void (^)(id, BOOL))block
    {
        if (![[FBSession activeSession] isOpen]){
    
            [[[UIAlertView alloc]initWithTitle:@"Please Login" message:@"Login to FB first" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];
    
            block(nil, NO);
            return;
    
        }
    
    
    
        [FBRequestConnection startWithGraphPath:@"/me/groups"
                                     parameters:nil
                                     HTTPMethod:@"GET"
                              completionHandler:^(
                                                  FBRequestConnection *connection,
                                                  id result,
                                                  NSError *error
                                                  ) {
                                  NSLog(@"result %@",result);
    
                                  block(result,error?NO:YES);
                              }];
    
    
    }
    
    -(void)getFacebookGroupDetail:(NSString *)groupId completionBlock:(void(^)(id responseData, BOOL result))block
    {
        NSString *str=[NSString stringWithFormat:@"/%@/members",groupId];
        [FBRequestConnection startWithGraphPath:str
                                     parameters:nil
                                     HTTPMethod:@"GET"
                              completionHandler:^(
                                                  FBRequestConnection *connection,
                                                  id result,
                                                  NSError *error
                                                  ) {
    
                                  block(result,error?NO:YES);
                                  /* handle the result */
                              }];
    }
    
    
    
    
    - (void)logoutFromFB:(void(^)(id data, BOOL result))block{
    
        [FBSession.activeSession closeAndClearTokenInformation];
    
        block(Nil, YES);
    }
    

    Thanks.

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: