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
0 Stimmen
Ich habe die Lösung hier gefunden: http://stackoverflow.com/questions/5783782/fbdidlogin-not-called-ios Öffnen Sie die Datei facebook.m und suchen Sie die folgende Zeile: [self authorizeWithFBAppAuth:YES safariAuth:YES]; und ändern Sie sie in [self authorizeWithFBAppAuth:NO safariAuth:NO];