Always return Error FBErrorCategoryUserCancelled while login with facebook in my application

旧城冷巷雨未停 提交于 2019-12-03 17:13:40

问题


In my Application there are three ways of login. one of them is login with facebook. But when I click on facebook button it ask me for accesing permissions, when click OK then it returs error FBErrorCategoryUserCancelled. And this is not happening on every devices, it happens on some devices. Here is my code -

if ([[FBSession activeSession]isOpen]) {
    /*
     * if the current session has no publish permission we need to reauthorize
     */
    if ([[[FBSession activeSession]permissions]indexOfObject:@"publish_actions"] == NSNotFound) {

        [[FBSession activeSession] requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends
                                              completionHandler:^(FBSession *session,NSError *error){

                                                  [ProgressHUD dismiss];
                                                  self.view.userInteractionEnabled = YES;

                                              }];

    }else{

        [self fetchUserDetails];
    }

}else{
    /*
     * open a new session with publish permission
     */
    [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                       defaultAudience:FBSessionDefaultAudienceOnlyMe
                                          allowLoginUI:YES
                                     completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
                                         if (!error && status == FBSessionStateOpen) {

                                             [self fetchUserDetails];

                                         }else{

                                             NSLog(@"error");

                                             if ([FBErrorUtility shouldNotifyUserForError:error]) {
                                                 alertTitle = @"Facebook Error";
                                                 alertMessage = [FBErrorUtility userMessageForError:error];

                                                 // This code will handle session closures that happen outside of the app
                                                 // You can take a look at our error handling guide to know more about it
                                                 // https://developers.facebook.com/docs/ios/errors
                                             } else if ([FBErrorUtility errorCategoryForError:error] == FBErrorCategoryAuthenticationReopenSession) {
                                                 alertTitle = @"Session Error";
                                                 alertMessage = @"Your current session is no longer valid. Please log in again.";

                                                 // If the user has cancelled a login, we will do nothing.
                                                 // You can also choose to show the user a message if cancelling login will result in
                                                 // the user not being able to complete a task they had initiated in your app
                                                 // (like accessing FB-stored information or posting to Facebook)

                                             } else if ([FBErrorUtility errorCategoryForError:error] == FBErrorCategoryUserCancelled) {
                                                 NSLog(@"user cancelled login");

                                                 alertTitle  = @"Facebook Error";
                                                 alertMessage = @"System login cancelled";

                                                 // For simplicity, this sample handles other errors with a generic message
                                                 // You can checkout our error handling guide for more detailed information
                                                 // https://developers.facebook.com/docs/ios/errors
                                             } else {
                                                 alertTitle  = @"Something went wrong";
                                                 alertMessage = @"Please try again later.";
                                                 NSLog(@"Unexpected error:%@", error);
                                             }

                                                 [[[UIAlertView alloc] initWithTitle:alertTitle
                                                                             message:alertMessage
                                                                            delegate:nil
                                                                   cancelButtonTitle:@"OK"
                                                                   otherButtonTitles:nil] show];

                                             [ProgressHUD dismiss];
                                             self.view.userInteractionEnabled = YES;

                                         }
                                     }];
}

Any help will be appreciated.Thank you.


回答1:


In my case it was because the facebook app's sandbox mode was still on, and therefore result in FBErrorCategoryUserCancelled for anyone who is not an administrator/developer/tester of the app.

To turn off sandbox mode on facebook, go to https://developers.facebook.com/apps/YOUR_FACEBOOK_APP_ID/review-status/

See where it says "Do you want to make this app and all its live features available to the general public?", make it to be YES. (You might need to insert a contact email before you can access this option).

Or, if you don't want to make the app go public just yet, invite the tester to be an admin/developer/tester of the app. The person need to accept your invitation before he can use it.



来源:https://stackoverflow.com/questions/21249672/always-return-error-fberrorcategoryusercancelled-while-login-with-facebook-in-my

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!