unable to get the access token through [FBSDKAccessToken currentAccessToken] in iphone sdk

前端 未结 4 1691
野性不改
野性不改 2020-11-27 22:13

I am creating a facebook app. I have implemented the login using class FBSDKLoginManager. At first time when i login the facebook, success block return the FBSDKLogi

相关标签:
4条回答
  • 2020-11-27 22:38

    You need to call

    [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]
    

    Before

    [FBSDKAccessToken currentAccessToken]
    
    0 讨论(0)
  • 2020-11-27 22:57

    Try This code. Based on Facebook SDK version 4.0

    AppDalegate.m

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
        return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation];
    }
    

    ViewController.m

    - (IBAction)btnFacebookPressed:(id)sender {
        FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
        [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 : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);
    
            [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , friendlists"}]
             startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                 if (!error)
                 {
                     NSLog(@"resultis:%@",result);
                 }
                 else
                 {
                     NSLog(@"Error %@",error);
                 }
             }];
    
        }
    
    }
    

    viewDidLoad call this method you get access token after login

    [self fetchUserInfo];
    
    0 讨论(0)
  • 2020-11-27 23:00

    Try This code. Based on Facebook SDK version 6.0 and above

    - (IBAction)fbIntegration:(id)sender
    {
    
        FBSDKLoginManager *loginmanager = [[FBSDKLoginManager alloc] init];
    
        [loginmanager logInWithReadPermissions:@[@"email",@"public_profile"] fromViewController:Nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
    
         {
             if (error)
             {
                 // Process error
                 NSLog(@"======error%@",error);
             }
             else if (result.isCancelled)
             {
                 // Handle cancellations
                 NSLog(@"canceled");
             }
             else
             {
                 if ([result.grantedPermissions containsObject:@"email"])
                 {
                     NSLog(@"result is:%@",result);
                     [self fetchUserInfo];
                 }
             }
         }];
    
    }
    -(void)fetchUserInfo
    {
        if ([FBSDKAccessToken currentAccessToken])
        {
            NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);
    
            [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , friendlists"}]
             startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                 if (!error)
                 {
                     NSLog(@"%@",connection);
                  }
                 else
                 {
                     NSLog(@"Error %@",error);
                 }
             }];
    
        }
    
    }
    

    hope this will helps to others.

    0 讨论(0)
  • 2020-11-27 23:02

    If you are trying the your application on simulator, please try on a real device because simulator has a user defaults bug.

    Falling back to loading access token from NSUserDefaults because of simulator bug

    0 讨论(0)
提交回复
热议问题