Я реализую v4.1 SDK для iOS, и когда я пытаюсь вызвать publishPermissions:, я не получаю обратного вызова.FBSDKLoginManager не обрабатывает logInWithPublishPermissions: правильно
По какой-то причине все работает отлично, когда я запускаю logInWithReadPermissions :, но когда я запускаю logInWithPublishPermissions: он никогда не ударяет моего обработчика ответов. Ничего не произошло.
Чтобы проверить это, я переустанавливаю свой loginManager перед запуском logInWithPublishPermissions:, и, к моему удивлению, он работал тогда (так называется NSLog (@ "RESULT")).
Я что-то пропустил, как работает loginManager? Разве я не могу использовать его, не перезагружая его?
// FacebookController.m
@implementation FacebookController
FBSDKLoginManager *loginManager;
static FacebookController *_shared = nil;
- (id)init {
self = [super init];
if (self != nil) {
userData = [[NSMutableDictionary alloc] init];
loginManager = [[FBSDKLoginManager alloc] init];
}
return self;
}
+ (id)getInstance {
if (!_shared) {
_shared = [[self alloc] init];
}
return _shared;
}
- (bool)hasPublishPermissions {
FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken];
if(accessToken != NULL){
NSSet *permissions = [accessToken permissions];
if([permissions containsObject:@"publish_actions"]){
return TRUE;
}
}
return FALSE;
}
- (void)requestPublishPermissionsWithDelegate:(id)aDelegate {
if(![self hasPublishPermissions]){
// FOR SOME REASON IT WORKS IF I RESET LOGIN MANAGER AS FOLLOWS
// loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
NSLog(@"RESULT: %@", result);
}];
}
}
- (void)connectToFacebookWithDelegate:(id)aDelegate {
FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken];
if(accessToken != nil){
[aDelegate performSelector:@selector(facebookSignedIn)];
} else {
[loginManager logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
NSLog(@"ERROR");
} else if (result.isCancelled) {
// Handle cancellations
NSLog(@"CANCELLED");
} else {
NSLog(@"SUCCESS");
[aDelegate performSelector:@selector(facebookSignedIn)];
}
}];
}
}
@end
Edit # 1: Включая видео он работает и не работает для данных сценариев:
Не работает (loginManager переинициализация закомментирована): https://dl.dropboxusercontent.com/u/14277258/not-working.mov
Рабочая (loginManager реинициализирована): https://dl.dropboxusercontent.com/u/14277258/working.mov
Привет, мы должны отправить его для просмотра, чтобы добавить опубликованные действия из статуса и обзора? –
все еще проблема до сегодняшнего дня –