如何在ios中集成facebook集成中的会话

时间:2016-06-22 09:24:27

标签: ios objective-c facebook

我将成功登录使用Facebook,但我有问题,因为当我运行应用程序比每次打开Facebook登录屏幕但我想要主屏幕如果用户可以注销登录屏幕open.so如何管理会话。

这是我的代码

- (IBAction)gb_login:(id)sender {
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    login.loginBehavior = FBSDKLoginBehaviorBrowser;
    [login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
     {
         if (error)
         {
             // Process error
         }
         else if (result.isCancelled)
         {
             // Handle cancellations
         }
         else
         {
             if ([result.grantedPermissions containsObject:@"email"])
             {


                 NSLog(@"result is:%@",result);

                 [self fetchUserInfo];

             }
         }
     }];

}
-(void)fetchUserInfo {

    if ([FBSDKAccessToken currentAccessToken]) {

        NSLog(@"Token is available");

        [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email"}]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
             if (!error) {


                 NSLog(@"Fetched User Information:%@", result);

                 NSLog(@"imagepath=%@",[[[result objectForKey:@"picture"]objectForKey:@"data"] objectForKey:@"url"]);
                 NSString *facebook=@"facebook";
                 [[NSUserDefaults standardUserDefaults] setObject:facebook forKey:@"logintype"];
                 [[NSUserDefaults standardUserDefaults] setObject:result forKey:@"facebooklogin"];
                 [[NSUserDefaults standardUserDefaults] synchronize];

             }
             else {
                 NSLog(@"Error %@",error);
             }
         }];

    } else {
       [[FBSDKLoginManager new] logOut];
        NSLog(@"User is not Logged in");
    }
}

1 个答案:

答案 0 :(得分:1)

首先,您需要检查登录屏幕AccessToken方法中是否有ViewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];

      if ([FBSDKAccessToken currentAccessToken]) {

        [self getFacebookData];

    }
    else
    {
     // here use login code bcz you dont have accessToken
    }
}

在这里你得到userInfo并根据你的需要保存并推送到下一个屏幕:

- (void)getFacebookData{
    if ([FBSDKAccessToken currentAccessToken]) {
        [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, bio ,location , friends ,hometown , friendlists , gender"}]

         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
             if (!error) {
                 NSLog(@"fetched user:%@", result);

               // here you need to code for push a next screen
             }

         }];
    }
}