2015-06-17 2 views
2

Я пытаюсь использовать .net YouTube API v.3.0 для извлечения комментариев. Я в основном пытаюсь повторно использовать sample for Java, но когда я пытаюсь авторизовать с моими секретами клиента, я не получаю никакой области с моим токеном (при проверке переменной учетных данных она имеет значение null). Вот код, который я буквально взял из .net например:Получить комментарии для видео YouTube, используя api v3.0

credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
    GoogleClientSecrets.Load(stream).Secrets, 
    new[] { YouTubeService.Scope.YoutubeForceSsl}, 
    "user", 
    CancellationToken.None, 
    new FileDataStore(this.GetType().ToString()) 
); 

Я могу перечислить все видео, которые я загружен, но я не могу получить комментарии нити для них, используя код ниже:

var req = youtubeService.CommentThreads.List("snippet"); 
req.VideoId = playlistItem.Snippet.ResourceId.VideoId; 
req.TextFormat = CommentThreadsResource.ListRequest.TextFormatEnum.PlainText; 
var res = req.Execute(); 

«youtubeService» был создан путем передачи переменной «учетных данных», созданной ранее. Кому-то больше повезло с комментариями с использованием .net?

+0

Образец для Java, взятый из примера .net? –

+0

Что не так с кодом, который вы опубликовали, вы получаете ошибку или просто нет данных? – DaImTo

+0

Я получил HTTP 403: запрещено, недостаточно привилегий. Мне удалось найти решение этого вопроса, пожалуйста, см. Мой комментарий ниже. – Mateusz

ответ

3

Репро шаги: Я должен был спать с этим, чтобы решить - получается, что я внесение изменений в приложении несколько раз, и сначала я только просил, чтобы читать списки воспроизведения (как в этом примере: Retrieve my uploads) , Поэтому я уполномочен с областью:

YouTubeService.Scope.YoutubeReadonly 

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

Что я сделал для решения этой проблемы: Я отозвал токен из кода своего приложения и снова авторизовался. На этот раз, поскольку не было кэшированного токена, появилось окно согласия с областью действия «управлять вашей учетной записью» (до того, как это был «доступ только для чтения»), и на этот раз я смог получить токен с надлежащей областью.

кода отменить маркер:

await credential.RevokeTokenAsync(CancellationToken.None); 

Ожидание: Я ожидал, что так как я изменил сферу в моем коде, окно согласия появится снова без необходимости отменить маркер, потому что мой кэшированных токен имел более низкий/разный объем.

Резюме: Вопрос (? Ошибка или дизайн) является то, что, как только вы получите маркер в приложение и хотите изменить масштаб (на более мощный), вы на самом деле нужно отменить маркер и разрешить снова , иначе вы получите тот же токен с начальной областью, даже если он был изменен в коде.

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