2015-06-30 4 views
0

Я хочу, чтобы мое приложение пометило друга в видео-сообщении. (Проводка видео без тегов работает нормально)Как я могу протестировать теги друзей facebooks

Учетная запись, которую я использую, была добавлена ​​в список тестеров для моего приложения. Так что я должен быть в состоянии сделать этот вызов без каких-либо разрешений.

Но ответ по-прежнему: "Ошибка: (# 3) Приложение не имеет возможности совершить этот вызов API."

Чтобы получить разрешение «Taggable Friends», мне нужно загрузить сборку моего приложения в fb. Но я не могу реализовать эту функцию, не проверив ее самостоятельно.

Как я могу решить эту проблему с курицей и яйцом?

Мой код выглядит следующим образом (прошивкой - ObjC):

NSDictionary *params = @{ 
         @"title": @"some title", 
         @"description": @"some desctiption", 
         @"tags": _friendId 
         }; 
SLRequest *uploadRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook 
               requestMethod:SLRequestMethodPOST 
                 URL:videourl 
               parameters:params]; 
+0

При использовании учетной записи, которая имеет роль в приложении, вы можете проверить что-либо без проверки. Вы уверены, что ваш токен доступа включает разрешение, необходимое для публикации видео ...? – CBroe

+0

Я не использую SDK для Facebook, а Social/Accounts Framework. Вот как я получаю токен. ACAccountCredential * fbCredential = [_facebookAccount credential]; NSString * accessToken = [fbCredential oauthToken]; Есть ли способ включить разрешения? – Eryk

+0

Я не знаком с этой картой. Как он обрабатывает логин и запрашивает разрешения, вам придется искать в своей документации. – CBroe

ответ

1

Я нашел решение. Вы не можете установить тег в запрос на загрузку (я до сих пор не знаю почему). Но вы можете пометить пользователя в видео после того, как вы загрузили видео.

Когда загрузка успешно, вы получите VideoID:

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData 
                   options:NSJSONReadingMutableContainers 
                    error:&error]; 

      _currentVideoId = json[@"id"]; 

С помощью этого идентификатора вы можете сделать второй запрос:

ACAccountCredential *fbCredential = [_facebookAccount credential]; 
NSString *accessToken = [fbCredential oauthToken]; 
NSString *urlStr = [NSString stringWithFormat: @"https://graph-video.facebook.com/%@/tags?access_token=%@&tag_uid=%@", _currentVideoId, accessToken, userId]; 

SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook 
             requestMethod:SLRequestMethodPOST 
                URL:[NSURL URLWithString: urlStr] 
              parameters: @{}]; 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { 
    [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 

     NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
     //Do something 
    }]; 
}); 

Чтобы сделать второй запрос, вам нужно разрешение на @ "user_videos". Если вы хотите пометить больше пользователей, вам нужно сделать этот запрос несколько раз. Возможно, это также возможно с одной просьбой, но я еще не выяснил, как это сделать.

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