2012-08-09 5 views
15

Ich habe versucht, iOS-App mit Facebook zu entwickeln und ich bin neu. Also habe ich versucht,Neues Facebook SDK FBSession sessionOpenWithPermissions

ein Login mit Facebook zu machen, gefolgt ein Tutorial auf Facebook und versuchen, es zu implementieren.

Aber ich habe festgestellt, [FBSession sessionOpenWithPermissions] nicht gefunden. Wenn ich die App

ausführen, wird es gezwungen, schließen und diesen Fehler sagen. Wenn das Projekt erstellen, wird es Warnung

gelbes Ausrufezeichen zeigen, dass sessionOpenWithPermission nicht

Das Tutorial veraltet in FBSession gefunden wird? Wenn ja, was ist der neue Code für das neue Facebook SDK für

sessionOpenWithPermission?

+3

Ich denke, das ist Validität ich das gleiche Problem habe mit dem Facebook-Beispiel . –

+1

Dies ist eindeutig ein Dokumentationskonfliktproblem. Ich schlage vor, die "Scrumptious" -Beispiel-App, die mit dem SDK ausgeliefert wird, für eine aktuelle Dokumentation zu verwenden. – Bringo

+4

gibt es eine Diskrepanz in der Dokumentation Tutorial und dem Beispiel. Sie sollten stattdessen '- (BOOL) openSessionWithAllowLoginUI: (BOOL) allowLoginUI;' verwenden. –

Antwort

0

Kopieren Sie einfach @Stas Zhukovskiy Antwort in den Kommentaren zu dem Antwortfeld:

ein Konflikt in der docs Tutorial ist und die Probe. Sie sollten verwenden - (BOOL) openSessionWithAllowLoginUI: (BOOL) allowLoginUI; stattdessen. - Stas Zhukovskiy

1

Mögliche Duplikat Facebook iOS SDK 3.0 Login Tutorial Issue with FBSession

//REPLACE 
[FBSession sessionOpenWithPermissions:nil 
        completionHandler: ^(FBSession *session, FBSessionState state, NSError *error) { 
         [self sessionStateChanged:session state:state error:error]; 
        }]; 

//WITH 
[FBSession openActiveSessionWithPermissions:nil 
           allowLoginUI:YES 
          completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 
           [self sessionStateChanged:session state:state error:error]; 
          }]; 
0

können Sie auch Sharekit Es ist sehr einfach zu implementieren und unterstützt auch andere soziale Netzwerke. sharekit

Share kit tutorial

1

Sie der seesion Facebook öffnet sich und zeigt optional die Login-ux

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI { 
    NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"email", 
          @"user_likes", 
          nil]; 
    return [FBSession openActiveSessionWithReadPermissions:permissions 
               allowLoginUI:allowLoginUI 
             completionHandler:^(FBSession *session, 
                  FBSessionState state, 
                  NSError *error) { 
              [self sessionStateChanged:session 
                   state:state 
                   error:error]; 
             }];} 
+0

viruss mca .Welche Änderungen haben Sie in meinem Code vorgenommen – ArunMak

0

Einige Code der Zeile wird in App Delegate.Just Prüfung fehlt, die one.after, dass u offen prüfen wird Sitzung und geschlossene Sitzung zur Zeit der Aufrufmethode für Facebook.

2

Versuchen Sie diesen Code

account = [[ACAccountStore alloc] init]; 
    accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; 
    arrayOfAccounts = [account accountsWithAccountType:accountType]; 


    appDelegate= (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    chk=appDelegate.chk_login; 

    if (!appDelegate.session.isOpen) { 
     // create a fresh session object 
     appDelegate.session = [[FBSession alloc] init]; 
     if (appDelegate.session.state == FBSessionStateCreatedTokenLoaded) { 
      // even though we had a cached token, we need to login to make the session usable 
      [appDelegate.session openWithCompletionHandler:^(FBSession *session, 
                  FBSessionState status, 
                  NSError *error) { 
       // we recurse here, in order to update buttons and labels 

      }]; 
     } 
    } 
+0

Da 'FBSession'' activeSession' statische öffentliche Variable hat, müssen Sie die Sitzung nicht im App-Delegaten speichern. – Zorayr

2

Vielleicht Code, den Sie hilft, setzen Sie es in Ihrem AppDelegate.m Klasse

- (void)sessionStateChanged:(FBSession *)session 
         state:(FBSessionState) state 
         error:(NSError *)error 
{ 
    switch (state) { 
     case FBSessionStateOpen: { 
      self.loggedinVCController = [[LoggedinVC alloc] initWithNibName:@"LoggedinVC" bundle:nil]; 
      self.navController = [[UINavigationController alloc]initWithRootViewController:self.loggedinVCController]; 
      self.window.rootViewControlle`enter code here`r = self.navController; 

     } 
      break; 
     case FBSessionStateClosed: 
     case FBSessionStateClosedLoginFailed: 
      // Once the user has logged in, we want them to 
      // be looking at the root view. 
      [self.navController popToRootViewControllerAnimated:NO]; 

      [FBSession.activeSession closeAndClearTokenInformation]; 

      self.viewController = [[SampleViewController alloc] initWithNibName:@"SampleViewController" bundle:nil]; 
      self.window.rootViewController = self.viewController; 

      break; 
     default: 
      break; 
    } 

    if (error) { 
     UIAlertView *alertView = [[UIAlertView alloc] 
            initWithTitle:@"Error" 
            message:error.localizedDescription 
            delegate:nil 
            cancelButtonTitle:@"OK" 
            otherButtonTitles:nil]; 
     [alertView show]; 
    } 
} 
- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation 
{ 
    return [FBSession.activeSession handleOpenURL:url]; 
} 
- (void)openSession 
{ 
    [FBSession openActiveSessionWithReadPermissions:nil 
             allowLoginUI:YES 
            completionHandler: 
    ^(FBSession *session, 
     FBSessionState state, NSError *error) { 
     [self sessionStateChanged:session state:state error:error]; 
    }]; 
} 
Verwandte Themen