1

У меня есть приложение для iPhone, которое позволяет пользователям записывать видео, и я хотел бы, чтобы они могли делиться этими видео на Facebook.Разрешить пользователю приложения iOS аутентифицироваться только с помощью Facebook, только если НЕОБХОДИМО

Однако, если пользователь не решит поделиться, я не хочу, чтобы он был перенаправлен на Facebook. Я пробовал метод, приведенный в учебнике iOS для Facebook, и он требует, чтобы пользователь перенаправлялся на Facebook и аутентифицировался, как только приложение запускается.

Это не нужно.

Что бы я хотел сделать, это иметь кнопку «Поделиться», которая позволяет пользователю пройти аутентификацию, а затем автоматически загружать видео прямо после этого с помощью запроса POST.

Возможно ли это? Кто-нибудь достиг такого же эффекта?

Спасибо.

ответ

0

Ответ на этот вопрос заключается в создании синглета, который работает как FBSessionDelegate, так и FBRequestDelegate, и позволяет передавать один экземпляр Facebook вокруг вашей программы.

Я назвал свою одноплодной FacebookVideoUploader, и в моем приложении делегатом я назвал:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [[[FacebookVideoUploader sharedInstance] facebook] handleOpenURL:url]; 

Вот так. Это не позволяет делегату делегата работать в uncluttered, и пусть singleton обрабатывает методы делегата.

В моем файле реализации для моей точки зрения контроллера, который обрабатывает загрузки видео я ставлю:

  • (IBAction) shareWithFacebook: (UIButton *) отправитель { [[FacebookVideoUploader sharedInstance] postVideoToFacebook]; }

Всё. Все методы делегата и сессии, а также postVideoToFacebook обрабатываются в одиночном режиме FacebookVideoUploader.

Это позволяет моим пользователям регистрироваться в моем приложении, не перенаправляясь на Facebook и позволяя им проходить аутентификацию, как только они решат, что хотят поделиться видео.

3

Я не уверен, какой учебник вы просматриваете, но он, вероятно, имеет аутентификацию при запуске как демонстрационный пример.

В вашем приложении, вы можете авторизовать ваше приложение с чем-то, как это после того, как видео сохраняется

// Share button action 
- (IBAction)sharePressed { 

    // If user is already authenticated 
    if ([facebook isSessionValid]) { 
     [self shareLinkToFacebook]; 
    } else { 
    // Authenticate with just email permissions    
     NSArray* permissions = [NSArray arrayWithObjects: 
           @"email", nil]; 

     [facebook setSessionDelegate:self]; 
     [facebook authorize:permissions]; 
    } 
} 

- (void) shareLinkToFacebook { 

    // Create a simple post 
    NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 

    [params setValue:[video url] forKey:@"link"]; 

    [params setValue:[video title] forKey:@"name"]; 
    [params setValue:@"description" forKey:@"description"]; 

    [facebook dialog:@"feed" andParams:params andDelegate:self]; 
} 

// FBSessionDelegate 
- (void) fbDidLogin { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:kFBAccessToken]; 
    [defaults setObject:[facebook expirationDate] forKey:kFBExpirationDateKey]; 
    [defaults synchronize]; 

    [self shareLinkToFacebook]; 
} 

Вы собираетесь иметь для аутентификации с Facebook, чтобы получить доступ к кнопочному нет пути вокруг этого ,

+0

благодарит @scott bossak. я использовал ваш ответ, был полезен при достижении моего решения, которое я опубликую позже. +1 –

0

Вы не можете делать то, что хотите. Чтобы опубликовать что-то, у вас должен быть действительный access_token. единственный способ добиться этого - следовать процедуре входа в систему, которую вы видели в официальном примере.

+0

привет @majinb_igor. оказалось, что я смог достичь желаемого результата. я выложу свое решение позже. –

 Смежные вопросы

  • Нет связанных вопросов^_^