【问题标题】:how to manage session in facebook integration in ios如何在 ios 中的 facebook 集成中管理会话
【发布时间】:2016-06-22 09:24:26
【问题描述】:

我将使用 facebook 成功登录,但我有问题,因为当我运行应用程序时,每次都打开 facebook 登录屏幕,但如果用户可以注销而不是打开登录屏幕,我想要主屏幕。所以如何管理会话。

这是我的代码

- (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");
    }
}

【问题讨论】:

    标签: ios objective-c facebook


    【解决方案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
                 }
    
             }];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多