#iphone #ios #facebook
#iPhone #iOS #Facebook
Вопрос:
У меня возникли трудности с входом в Facebook, чтобы вернуться к правильному представлению в моем приложении и вызвать соответствующие функции facebook.
В примере Facebook имеет просто [controller facebook], с которого они начинаются. Я использую приложение tabbar, поэтому у меня нет необходимой ссылки. Я создал указатель на желаемый вид и использовал его … он открылся правильно, но не вызвал ни один из методов, связанных с facebook, в частности:
(void)fbDidLogin;
(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[*NotReferencedViewController* facebook] handleOpenURL:url];
}
Кто-нибудь еще сталкивался с этим?
Ответ №1:
Не уверен, о каком примере вы говорите, но вы должны создать и сохранить свой Facebook-объект в центральном месте, таком как ваша модель или UIApplicationDelegate
. Тогда оно было бы доступно через синглтоны, чтобы у вас всегда был к нему доступ, например:
[[UIApplication sharedApplication] delegate].facebook
Таким образом, вы можете получить доступ к объекту facebook с любого контроллера просмотра, который в нем нуждается.
Когда вы делаете что-то вроде
NSArray* permissions = [[NSArray arrayWithObjects:@"email", @"read_stream", @"publish_stream", nil] retain];
[facebook authorize:permissions delegate:self];
указание delegate:self
означает, что вы будете реализовывать методы в этом классе, которые Facebook может вызывать для информирования вас об определенных событиях. Одним из таких методов является fbDidLogin
, и с его помощью вы можете делать все, что вам нужно для:
-(void)authorizeFacebook {
NSArray* permissions = [NSArray arrayWithObjects:@"email", @"read_stream", @"publish_stream", nil];
[facebook authorize:permissions delegate:self];
}
// if the authorization succeeds it will come back to your app and call the method below
-(void)fbDidLogin {
// switch view, call the facebook graph, or do whatever else you like
}
Вы могли бы сделать это в самом делегате приложения или в контроллере представления.
Вы можете ознакомиться с методами делегирования facebook, просмотрев файлы .h facebook SDK: Facebook.h, FacebookRequest.h и т.д.
Редактировать
И ваш handleOpenURL:
метод должен выглядеть точно так же, как в примере fb (при условии, что вы не обрабатываете другие схемы URL):
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
Комментарии:
1. Я поместил это в appdelegate, но теперь оно даже не вернется в мое приложение после входа в систему. Метод handleOpenURL вызывает объект facebook для его обработки, но теперь он даже не будет откатываться…
2. Обновили ли вы свой файл plist, как показано по ссылке выше.