I am not able to fetch user data from Facebook in iOS

前端 未结 2 1698
梦毁少年i
梦毁少年i 2021-01-15 22:02

I am new to iPhone programming.Using below code i am login into Facebook and fetching data.But here problem is if click on the Loginwithfacebook button Facebook dialog box o

相关标签:
2条回答
  • 2021-01-15 22:42

    If you are willing to, you can also do it with Parse :

    - (IBAction)facebookRegistrationButtonPressed {
    
            // The permissions requested from the user
    
            NSArray *permissionsArray = @[@"email", @"user_about_me", @"publish_actions", @"status_update", @"manage_pages", @"publish_stream"];
    
            // Login PFUser using Facebook
            [PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
                if (!user) {
                    if (!error) {
                        NSLog(@"Uh oh. The user cancelled the Facebook login.");
                    } else {
                        NSLog(@"Uh oh. An error occurred: %@", error);
                    }
                } else if (user.isNew) {
                    NSLog(@"User with facebook signed up and logged in!");
                    [self processFacebookRequest];
                } else {
                    NSLog(@"User with facebook logged in!");
                    [self processFacebookRequest];
                }
            }];
        }
    
        - (void)processFacebookRequest {
            FBRequest *request = [FBRequest requestForMe];
            // Send request to Facebook
            [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                if (!error) {
                    // result is a dictionary with the user's Facebook data
                    NSDictionary *userData = (NSDictionary *)result;
                    NSString * email = [result objectForKey:@"email"];
    
                    NSString *facebookID = userData[@"id"];
                    NSLog(@"facebookID = %@", facebookID);
    
                } else {
                    NSLog(@"error : %@", error.localizedDescription);
                }
            }];
        }
    
    0 讨论(0)
  • 2021-01-15 22:59

    if you are checking sample code of provide by Facebook in FacebookSDK there is one sample SessionLoginSampleplease check how did work:-

    You have to configur you app like this:-

    enter image description here

    in Native iOS app you have to set you app Bundle Id that you are using in to you Project for example(com.compame.projecname)

    For implement in to your Project Here i put the explain.

    in .h file create One Button with IBOutlet and connect this button in to xib as we did normally

    #import <FacebookSDK/FacebookSDK.h>
    
    
    @interface LoginViewController : UIViewController<FBLoginViewDelegate>
    {
        IBOutlet UIButton *FB_login; // just connect IBoutlate no need to give IBAction
        FBLoginView *loginview;
    
    }
    @property (strong, nonatomic) id<FBGraphUser> loggedInUser;
    @property (strong, nonatomic) IBOutlet FBProfilePictureView *profilePic; //this is for show profile pic or logged in user
    

    in .m File @implementation LoginViewController @synthesize profilePic = _profilePic;

    - (void)viewDidLoad
    {
        loginview = [[FBLoginView alloc] init];
        loginview =
        [[FBLoginView alloc] initWithPublishPermissions:[NSArray arrayWithObjects:@"publish_actions",@"email",nil] defaultAudience:FBSessionDefaultAudienceFriends];
    
        loginview.frame =FB_login.frame;//CGRectMake(90,149, 280, 55);
        for (id obj in loginview.subviews)
        {
            if ([obj isKindOfClass:[UIButton class]])
            {
                UIButton * loginButton =  obj;
    
                UIImage *loginImage = [UIImage imageNamed:@"btn_fb_login.png"];
                [loginButton setBackgroundImage:loginImage forState:UIControlStateNormal];
                [loginButton setBackgroundImage:nil forState:UIControlStateSelected];
                [loginButton setBackgroundImage:nil forState:UIControlStateHighlighted];
                [loginButton sizeToFit];
            }
            if ([obj isKindOfClass:[UILabel class]])
            {
                UILabel * loginLabel =  obj;
                loginLabel.text =@""; //@"Log in to facebook";
                loginLabel.textAlignment = NSTextAlignmentCenter;
                loginLabel.frame =CGRectMake(123,149, 280, 55);// CGRectMake(0, 0, 271, 37);
            }
        }
    
        loginview.delegate = self;
    
        [self.view addSubview:loginview];
    
        [super viewDidLoad];
    
    }
    
    -(void)LogOut:(NSNotification *)notif
    {
        [self loginViewShowingLoggedOutUser:loginview];
        NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        for (NSHTTPCookie *each in cookieStorage.cookies) {
            // put a check here to clear cookie url which starts with twitter and then delete it
            [cookieStorage deleteCookie:each];
        }
    }
    
    #pragma  mark------ FaceBook Sign In method------------
    
    - (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView {
    
        NSLog(@"Logged In");
    
    
    }
    
    - (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                                user:(id<FBGraphUser>)user {
    
        NSLog(@"%@",user);
        self.profilePic.profileID = user.id;
    
    
    
    
    
    }
    - (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView {
        // Called after logout
        NSLog(@"Logged out");
    
        self.profilePic.profileID = nil;
        [FBSession.activeSession closeAndClearTokenInformation];
    
    
    }
    - (void)loginView:(FBLoginView *)loginView handleError:(NSError *)error {
        // see https://developers.facebook.com/docs/reference/api/errors/ for general guidance on error handling for Facebook API
        // our policy here is to let the login view handle errors, but to log the results
        NSLog(@"FBLoginView encountered an error=%@", error);
    }
    

    NOTE:- If you are trying to set Image of logged in user using FBProfilePictureView do not forget add [FBProfilePictureView class]; in to app Delegate like Bellow

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [FBProfilePictureView class];
        // Override point for customization after application launch.
        return YES;
    }
    

    Here it is a sample code for you Sample code Facebook log-in with Image

    0 讨论(0)
提交回复
热议问题