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

前端 未结 2 1802
梦毁少年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: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 
    
    
    @interface LoginViewController : UIViewController
    {
        IBOutlet UIButton *FB_login; // just connect IBoutlate no need to give IBAction
        FBLoginView *loginview;
    
    }
    @property (strong, nonatomic) id 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)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

提交回复
热议问题