ios – 无法通过iphone sdk中的[FBSDKAccessToken currentAccessToken]获取访问令牌

我正在创建一个Facebook应用程序.我已经使用FBSDKLoginManager类实现了登录.当我第一次登录Facebook时,成功块返回FBSDKLoginManagerLoginResult对象,该对象包含访问令牌对象(FBSDKAccesstoken对象),该对象使用完整的方式共享包含.But在第二次(重新启动应用程序后),当我尝试获取访问令牌使用函数[FBSDKAccesstoken currentAccesstoken]返回nil.那么如何获得访问令牌(FBSDKAccesstoken对象)第二次没有再次登录Facebook.

解决方法

尝试这段代码.基于Facebook SDK 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调用方法后,您可以在登录获取访问令牌

[self fetchUserInfo];

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...