2016-06-22 9 views
0

Facebookを使用してsuccesfullログインしますが、毎回開いているFacebookのログイン画面よりもアプリを実行するときに問題がありますが、ユーザーがログイン画面のopen.soよりもログアウトできる場合、セッション。iOSの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 *[email protected]"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

であるかをチェックする必要がまずあなたはログイン画面でViewDidLoad方法AccessTokenがありますか:あなたはのUserInfoを取得し、あなたの必要性につきとして保存

- (void)viewDidLoad { 
    [super viewDidLoad]; 

     if ([FBSDKAccessToken currentAccessToken]) { 

     [self getFacebookData]; 

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

そして、ここを次の画面に移動します。

- (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 
      } 

     }]; 
    } 
} 
関連する問題