Все magic находятся в
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate
, что вызывает [self authorizeWithFBAppAuth:YES safariAuth:YES]
:
FBAppAuth:YES
будет пытаться аутентифицироваться с помощью приложения Facebook, если установлено safariAuth:YES
попытается пройти аутентификацию с помощью Safari, если устройство поддерживает многозадачность
Итак, вы хотите [self authorizeWithFBAppAuth:NO safariAuth:NO]
Если вы хотите оставить Не измененный Facebook SDK вы можете просто «выставить» свои приватные API:
@interface Facebook (Private)
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
safariAuth:(BOOL)trySafariAuth;
@end
, а затем расширить, если с категорией:
@interface Facebook (MyApp)
- (void)myAuthorize:(id<FBSessionDelegate>)delegate;
@end
@implementation Facebook (MyApp)
- (void)myAuthorize:(id<FBSessionDelegate>)delegate {
_permissions = [[NSArray arrayWithObjects:@"email", *(whatever you need)*, nil] retain];
_sessionDelegate = delegate;
[self authorizeWithFBAppAuth:NO safariAuth:NO]; // force in app auth
}
@end
Затем использовать его почтиобычно :
Facebook *facebook = [[Facebook alloc] initWithAppId:MY_APP_FB_ID];
[facebook myAuthorize:self];
Это популярный запрос, который они не реализовали, есть даже запросов на получение с решениями ...