2

我正在使用FBSDKLoginKit版本 4.1.0。
当我使用 facebook 登录时, FBSDKLoginManagerLoginResultisCancelled 为 true,访问令牌为 nil。我已在info.plist中配置了所有内容,还在 AppDelegate 中编写了代码。
请让我知道我错过了什么?

谢谢。

4

1 回答 1

0

请像这样试试!!希望您已正确配置info.plist

static NSString *kFBLoginRequestIdKey               =   @"userID";
static NSString *kFBUserInfoIdKey                   =   @"id";
static NSString *kFBLoginRequestAccessTokenKey      =   @"accessToken";
static NSString *kFBLoginRequestAuthorizationKey    =   @"authResponse";


NSArray *fbReadPermissions = @[@"public_profile", @"email", @"user_friends"];
NSArray *fbUserInfoParams = @{@"fields": @"id, name, email, birthday, picture"};

[self doFacebookLogin];

-(void)doFacebookLogin {

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];

[loginManager logOut];

[loginManager logInWithReadPermissions:fbReadPermissions fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

    if (error) {
       NSLog(@"Error %@", error);
    }
    else if (result.isCancelled) {
        NSLog(@"Cancelled by user");
    }
    else {

        [self getFBUserProfile:^(NSMutableDictionary *requestDict) {

            if(requestDict.count > 0) {

             // do stuff here

            }

        }];
    }
}];

}


-(void)getFBUserProfile:(void(^)(NSMutableDictionary *requestDict))completionBlock {

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:fbUserInfoParams] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

     NSMutableDictionary *requestDict = [[NSMutableDictionary alloc] init];

    if(!error) {

        NSLog(@"%@",result);
        NSDictionary *userData = (NSDictionary *)result;

        NSString *userId = [userData valueForKey:kFBUserInfoIdKey];
        NSString *token = [FBSDKAccessToken currentAccessToken].tokenString;

        NSDictionary *params = @{kFBLoginRequestIdKey: userId, kFBLoginRequestAccessTokenKey: token};
        [requestDict setObject:params forKey:kFBLoginRequestAuthorizationKey];

       // NSString *profileURL = [[[userData valueForKey:@"picture"] valueForKey:@"data"] valueForKey:@"url"];
    }

    completionBlock (requestDict);

}];
}
于 2016-01-20T08:03:06.197 回答