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 に答える