FBSDKLoginManager logInWithPublishPermissions always returns isCancelled=YES

前端 未结 11 1401

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

    I also faced the same issue and i spent almost 2 hours to resolve the issue. What i did is

    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    **[login logOut];** // adding this single line fixed my issue
    [login logInWithReadPermissions: @[@"public_profile"] fromViewController:self  handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
         if (error) {
             NSLog(@"Process error");
         } else if (result.isCancelled) {
             NSLog(@"Cancelled");
         } else {
             NSLog(@"Logged in");
             [self GetData];
         }
     }] // I called this logout function 
    

    and the issue was fixed

    i was using both google and Facebook login so i had to implement my openURL method like this, iOS 9+

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {
        if ([[url absoluteString] containsString:@"YOURFBID"]) {
            return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url options:options];
        } else {
            return [[GIDSignIn sharedInstance] handleURL:url
                                       sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                              annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
        }
        return NO;
    }
    

    // you can perform further any operations using the access token

    - (void)GetData {
        if ([FBSDKAccessToken currentAccessToken]) {
            NSDictionary *AccessToken = [FBSDKAccessToken currentAccessToken];
            [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, first_name, picture.type(large) ,last_name"}]
             startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                 if (!error) {
                     //NSLog(@"fetched user:%@", result);
                     //NSDictionary *Result = result;
                     NSDictionary *params = [NSMutableDictionary dictionaryWithObject:[AccessToken tokenString] forKey:@"access_token"];
    
                 } else {
                     [self showAlertController:@"Error" message:error.localizedDescription];
                 }
             }];
        } }
    

提交回复
热议问题