2014-01-21 4 views
10

In meiner Anwendung gibt es drei Möglichkeiten der Anmeldung. Einer von ihnen ist mit Facebook einloggen. Aber wenn ich auf Facebook Button klicke, frage ich nach Zugriffsberechtigungen, wenn ich auf OK klicke, dann wird der Fehler FBErrorCategoryUserCancelled zurückgegeben. Und das passiert nicht auf allen Geräten, sondern auf manchen Geräten. Hier ist mein Code -Immer Fehler FBErrorCategoryUserCancelled während der Anmeldung mit Facebook in meiner Anwendung

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; 

             } 
            }]; 
} 

Jede Hilfe wird geschätzt werden. Danke.

Antwort

0

In meinem Fall war es, weil der Sandbox-Modus der Facebook-App noch aktiv war, und daher FBErrorCategoryUserCancelled für jeden, der kein Administrator/Entwickler/Tester der App ist.

Um Sandbox-Modus auf Facebook zu deaktivieren, gehen Sie zu https://developers.facebook.com/apps/YOUR_FACEBOOK_APP_ID/review-status/

Sehen Sie, wo es heißt „Haben Sie diese App machen und all seine Live-Funktionen für die breite Öffentlichkeit zur Verfügung?“, Machen es ja zu sein, . (Möglicherweise müssen Sie eine Kontakt-E-Mail einfügen, bevor Sie auf diese Option zugreifen können).

Oder, wenn Sie die App noch nicht veröffentlichen möchten, laden Sie den Tester ein, ein Administrator/Entwickler/Tester der App zu sein. Die Person muss Ihre Einladung annehmen, bevor Sie sie verwenden können.

+0

Vielen Dank für Ihre Antwort. Aber ich habe es schon zu JA geschafft. Gibt es einen anderen Weg? – Smita

Verwandte Themen