2015-07-27 2 views
0

Я пишу простое приложение, которое берет некоторые новые закачки из подписанных каналов и добавляет их в указанный список воспроизведения. Тип сервиса используется учетная запись с помощью следующего кода:Учетная запись службы API YouTube возвращает «запрещено 403» при вставке элемента списка воспроизведения

var certificate = new X509Certificate2(certificateFileName, "notasecret", X509KeyStorageFlags.Exportable); 
var serviceInitializer = new ServiceAccountCredential.Initializer(serviceAccountEmail) 
{ 
     Scopes = new[] { YouTubeService.Scope.Youtube } 
}; 
var serviceInitializerInstance = serviceInitializer.FromCertificate(certificate); 

var credential = new ServiceAccountCredential(serviceInitializerInstance); 
var youtubeService = new YouTubeService(new BaseClientService.Initializer 
{ 
     HttpClientInitializer = credential, 
     ApplicationName = applicationName 
}); 

Я преуспел в чтении всей необходимой информации, но когда я пытаюсь вставить элемент в список воспроизведения она всегда возвращает эту ошибку:

Error: Google.Apis.Requests.RequestError Access forbidden. The request may not be properly authorized. [403]

Errors [ Message[Access forbidden. The request may not be properly authorized.] Location[ - ] Reason[forbidden] Domain[yo utube.common] ]

Это кажется будь то общая ошибка Core API в соответствии с ссылкой this.

Я видел много образцов, и они все одинаковы. Мой код:

var newPlaylistItemClone = new PlaylistItem(); 
newPlaylistItem.Snippet = new PlaylistItemSnippet(); 
newPlaylistItem.Snippet.PlaylistId = playlist.Id; 
newPlaylistItem.Snippet.ResourceId = new ResourceId(); 
newPlaylistItem.Snippet.ResourceId.VideoId = existingPlaylistItem.Snippet.ResourceId.VideoId; 
newPlaylistItem.Snippet.ResourceId.Kind = existingPlaylistItem.Snippet.ResourceId.Kind; 

await youTubeService.PlaylistItems.Insert(newPlaylistItem, "snippet").ExecuteAsync(); 

Где newPlaylistItem это элемент, я хочу, чтобы вставить и existingPlaylistItem это существующий элемент из списка воспроизведения канала добавляется. Я просто копирую значения и изменяю идентификатор списка воспроизведения.

Кроме того, при использовании API-обозревателя на сайте документации Google Developers все работает нормально (используется веб-авторизация). В Google Developers Console у меня есть все API-интерфейсы. Может быть, проблема в том, что мне не хватает информации, необходимой для типа учетной записи службы? Может ли кто-нибудь помочь мне решить эту проблему?

Вот мой GitHub репозиторий с исходным кодом. Ошибка возникает по строке 235 по запросу.

ответ

1

Цитируя официальной документации API Google Youtube:

Учетные записи служб не работают для вызовов API данных YouTube, поскольку учетные записи служб требуют соответствующего канала YouTube, и вы не можете связать новые или существующие каналы с учетными записями служб. Если вы используете учетную запись службы для вызова API данных YouTube, сервер API возвращает ошибку с типом ошибки, установленным для несанкционированного доступа, и причина, установленная для youtubeSignupRequired.

refer.

+1

Спасибо !. Я смотрел, хотя много документации, но пропустил это. – GaaRa

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

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