Наслаждаться.
аюсь внедрить последнюю версию Facebook Connect SDK, и у меня возникли некоторые проблемы. По некоторым причинам обратные вызовы делегата дляFBSessionDelegate
протокол не увольняется. Я следовал инструкциям на странице git Facebook и пытался имитировать пример приложения Facebook, но безуспешно. Я схожу с ума здесь, поэтому я опубликую свой код, и, возможно, кто-то увидит что-то глупое, что я пропустил.
#import <Foundation/Foundation.h>
#import "FBConnect.h"
@interface FacebookWrapper : UIViewController <FBSessionDelegate, FBRequestDelegate, FBDialogDelegate>{
Facebook* _facebook;
NSArray* _permissions;
}
@property(readonly) Facebook *facebook;
- (void)login;
@end
#import "FacebookWrapper.h"
static NSString* kAppId = @"1234455667778";
@implementation FacebookWrapper
@synthesize facebook = _facebook;
- (id)init {
if (self = [super init]) {
_permissions = [[NSArray arrayWithObjects: @"read_stream", @"offline_access",nil] retain];
_facebook = [[Facebook alloc] initWithAppId:kAppId];
}
return self;
}
- (void)dealloc {
[_facebook release];
[_permissions release];
[super dealloc];
}
- (void)login {
[_facebook authorize:_permissions delegate:self];
}
- (void)fbDidLogin {
NSLog(@"Did Log In");
}
- (void)fbDidNotLogin:(BOOL)cancelled {
NSLog(@"Failed to log in");
}
- (void)fbDidLogout {
NSLog(@"Logged Out");
}
И чтобы позвонить из другого класса,
FacebookWrapper *fw = [[FacebookWrapper alloc] init];
[fw login];
Поведение, которое я вижу по телефону, соответствует ожиданиям. Приложение Facebook запускается при инициализации и запрашиваются разрешения. Затем телефон возвращает мое приложение на передний план, но делегатыFBSessionDelegate
никогда не увольняют. Я пробовал это в примере приложения Facebook, используя мой идентификатор приложения, и он работал нормально. Я понятия не имею, в чем разница.