2016-07-28 13 views
0

Es zeigt diesen Fehler für mich. Alles, was ich tat, war die Facebook-SDK mit CocoaPods herunterladen und ich versuche, sich anzumelden, kann aber nicht, weil dieser Fehler = (Objective-C: "Empfänger FBSDKAccessToken für die Nachricht der Klasse ist eine Vorwärtsdeklaration"

FBSDKAccessToken und FBSDKGraphRequest mit diesem gleichen Fehler sind ...

Dies ist mein Code:

#import "TestesViewController.h" 
#import "FBSDKCoreKit.h" 
#import "FBSDKLoginKit.h" 


@implementation TestesViewController 

-(void) viewDidLoad { 
    [super viewDidLoad]; 
    FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc]init]; 
    loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"]; 
    loginButton.center = self.view.center; 
    [self.view addSubview:loginButton]; 
} 
- (IBAction)loadButton:(id)sender { 
    if ([FBSDKAccessToken currentAccessToken]) { 
     [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil] 
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
      if (!error) { 
       NSLog(@"fetched user:%@", result); 
      } 
     }]; 
    } 
} 
@end 

Antwort

0

Hat

Wechsel
#import "FBSDKLoginKit.h" 
#import "FBSDKCoreKit.h" 

zu

#import <FBSDKLoginKit/FBSDKLoginKit.h> 
#import <FBSDKCoreKit/FBSDKCoreKit.h> 

Problem beheben? Wenn nicht, liegt wahrscheinlich ein Problem mit den Header-Suchpfaden in Ihrem Projekt/Arbeitsbereich vor.

+0

Danke für die Antwort. Nicht behoben den Fehler und sogar den Header Suchpfad ändern, der Fehler wird fortgesetzt ... =/ –

-1

Hier verwenden Sie benutzerdefinierte LoadButton anstelle von FBSDKLogin-Taste, so denke ich, um Ihre benutzerdefinierte FB Login-Schaltfläche verwenden können Ihre Parameter nicht Null sein, müssen Sie Parameter bereitstellen. Darüber hinaus müssen Sie sich zuerst mit dem Login-Manager anmelden, um Zugriffstoken zu erhalten, die null sind, wenn der Benutzer sich nie angemeldet hat. Sobald Sie Zugriffstoken erhalten, müssen Sie sie irgendwo speichern, wahrscheinlich in den Benutzereinstellungen Teil für jetzt. Versuchen Sie, den Code zu ändern:

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; 
[loginManager logInWithReadPermissions:@[@"email",@"user_birthday",@"public_profile"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
    // if ([FBSDKAccessToken currentAccessToken]) { 
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields":@"first_name, last_name, picture.type(large),email"}] 
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
     if (!error) { 
      NSLog(@"fetched user:%@", result); 
     } 
    }]; 
    //} 
}]; 

fügen Sie diesen Code in Ihren Load-Button-Teil ein. Das funktioniert für mich. Dies könnte für Sie arbeiten. Wenn Sie wirklich eine benutzerdefinierte FB Login-Schaltfläche erstellen möchten, betrachten Sie Custom FB button

+0

Jetzt ist es: "Receiver 'FBSDKGraphRequest' für die Klasse Nachricht ist eine Forward-Deklaration" Ich habe versucht, den Code, der den Link gesendet wurde und es funktionierte. Aber es wird nicht GraphRequest verwendet, so kann ich immer noch die Benutzerinformationen erhalten? –