4 Stimmen

Facebook api ios-sdk, Delegierte funktionieren nicht, fbDidLogin nicht aufgerufen

Ich habe ein Problem mit dem neuesten iOS sdk. Ich melde mich erfolgreich an und die Anwendung kommt zurück, aber die Delegationsmethoden wie fbDidLogin usw. werden nicht aufgerufen.

Ich habe alles in einer einzigen Delegatendatei ohne Controller ausprobiert und es hat funktioniert. Wenn ich aber mehrere Controller habe, funktioniert es nicht mehr.

Ich verwende meine selbst geschriebene Klasse FacebookFetchter mit Facebook zu tun haben.

    //FacebookFetchter.h
    #import Foundation/Foundation.h>
    #import "FBConnect.h"

    @interface FacebookFetchter : NSObject <FBDialogDelegate,FBSessionDelegate,FBRequestDelegate> {
        Facebook *facebook;
        FacebookFetchter *facebookFetcher;  }

    @property (nonatomic, retain) IBOutlet UIWindow *window;  @property (retain) Facebook *facebook; @property (retain) FacebookFetchter
*facebookFetcher; @end

    //  FacebookFetchter.m
    #import "FacebookFetchter.h"

    @implementation FacebookFetchter @synthesize facebookFetcher,facebook;

    -(void)login{
        NSLog(@"facebook login...");
        facebook = [[Facebook alloc] initWithAppId:@"..."]; //took the id out
        NSArray *permissions =  [[NSArray arrayWithObjects: 
                                  @"read_stream", @"offline_access", @"user_photos", @"user_photo_video_tags" , @"friends_photo_video_tags", @"friends_photos",@"friends_about_me",@"user_about_me",@"manage_friendlists",@"read_friendlists",@"user_birthday",@"friends_birthday", nil] retain];

        [facebook authorize:permissions delegate:self];

    }

    ...
    -(void)fbDidLogin {
        NSLog(@"Erfolgreich eingeloggt...."); } ...

    @end

In meinem Delegaten habe ich dies implementiert und ich habe auch die plist mit dem fbapp_id url-Schema eingerichtet

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    NSLog(@"AppDelegate handleOpenURL");
    return [[[settings facebookFetcher] facebookFetcher] handleOpenURL:url];
}

dort Einstellungen ist meine Ansicht Controller:

//settings.h @interface Settings : UIViewController {
    FacebookFetchter *facebookFetcher;
    //Facebook *facebook; }

@property (retain) FacebookFetchter
*facebookFetcher;
- (IBAction)sync; @end

//settings.m @synthesize facebookFetcher;

//within this action the facebook login is called
- (IBAction)sync{
    NSLog(@"sync...");
    facebookFetcher = [[FacebookFetchter alloc] init];
    [facebookFetcher login]; }

Irgendwelche Vorschläge?

Ich danke Ihnen!

0 Stimmen

Haben Sie herausgefunden, warum dies geschieht? Ich habe das gleiche Problem. Die Methode fbDidLogin wird nicht aufgerufen

3 Stimmen

Entfernt meine Antwort - ist Ihr - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url Methode aufgerufen wird? Haltepunkt das.

0 Stimmen

Diese Methode wird auf meiner Seite nicht aufgerufen, gleiche Situation

3voto

Steve Punkte 921

Ich hatte gerade dieses Problem und glaube, dass ich Ihre Lösung gefunden habe. Wenn Sie die App auf Facebook erstellen, müssen Sie Ihre App-Einstellungen bearbeiten, um eine native iOS-App zu ermöglichen. Die ausgewählte ios-Bundle-ID muss GENAU mit der Bundle-ID in der App übereinstimmen, die Sie erstellen. Facebook gibt an, dass sie dies überprüfen, bevor sie Ihre App autorisieren. Komisch ist, dass, wenn man die Facebook-App vom Gerät entfernt und dann versucht, sich zu authentifizieren, der Webbrowser verwendet wird und diese "Sicherheit" scheinbar komplett umgangen wird. Facebook sendet keine Fehlermeldung zurück, so dass es eine Menge Spaß gemacht hat, das Problem zu finden. Ich dachte, ich werfe diese Antwort in der Hoffnung, einigen zukünftigen Entwicklern Ärger zu ersparen, in die Welt hinaus. Ich hoffe, das hilft.

1voto

Steven Obua Punkte 842

Ich bin auf das gleiche Problem gestoßen. Bei mir wurde es gelöst, indem ich die Eigenschaft "Anwendung läuft nicht im Hintergrund" in der Info-Pliste deaktivierte.

1voto

Mathew Varghese Punkte 4527

Ich hatte das gleiche Problem. Ich hatte die Berechtigungen für den Zugriff auf Facebook nicht festgelegt. Ich schrieb eine zusätzliche Codezeile

NSArray *permissions = [[NSArray arrayWithObjects:@"read_stream",@"offline_access","publish_stream", nil] retain];

Es funktioniert perfekt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X