FBSDKLoginManager logInWithPublishPermissions always returns isCancelled=YES

前端 未结 11 1393

I am having trouble figuring out how to log a user into my app. [FBSDKAccessToken currentAccessToken] is nil, so I am calling:

[[[FBSDKLoginMana         


        
11条回答
  •  感动是毒
    2020-12-01 14:32

    This method works in iOS 9

    // Facebook Login Completion delegate
    - (void)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result error:(NSError *)error
    {
        if (result){
            NSLog(@"%@",result);
            NSLog(@"%@",result.grantedPermissions);
           [self getFacebookData:result];
         }
    }  
    
    - (void)getFacebookData:(FBSDKLoginManagerLoginResult *)result{
    
       if (![result.grantedPermissions containsObject:@"email"])
       {
          FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
          login.loginBehavior = FBSDKLoginBehaviorWeb;
          [login logInWithReadPermissions:@[@"email"] fromViewController:self 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);
                     if ([FBSDKAccessToken currentAccessToken]) {
                         [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"first_name, last_name, email, id"}]
                          startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                              if (!error) {
                                  NSLog(@"fetched user:%@", result);
                                  [self registerWithFacebook:result];
                              }else{
                                  NSLog(@"%@",error);
                              }
                          }];
                     }
    
    
                 }
             }
         }];
    
    
     }else{
        if ([FBSDKAccessToken currentAccessToken]) {
            [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"first_name, last_name, email, id"}]
             startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                 if (!error) {
                     NSLog(@"fetched user:%@", result);
                     [self registerWithFacebook:result];
                 }else{
                     NSLog(@"%@",error);
                 }
             }];
        }
    }
    

    }

    NOTE : Use FBSDKLoginBehaviorWeb instead of FBSDKLoginBehaviorBrowser. This will surely work

提交回复
热议问题