2013-07-03 2 views
0

У меня есть приложение, которое создает и загружает видео для клиентов. Перед попыткой загрузки клиент предоставляет авторизацию, а результирующие токены доступа и обновления сохраняются. Иногда бывает, что у клиента нет канала YouTube, связанного с их учетной записью Google. Я обнаруживаю это и создаю для них канал. Это нормально работает нормально. Но не всегда. Вот пример того, где создания канала потерпел неудачу:ServiceForbiddenException Linking Channel

Obtaining access token for Customer 
post https://accounts.google.com/o/oauth2/token 
HTTP Response: 200 
{ 
"access_token" : "_new_access_token_", 
"token_type" : "Bearer", 
"expires_in" : 3600 
} 

Uploading video '_video_name_' for Customer 
post http://uploads.gdata.youtube.com/feeds/api/users/default/uploads 
    Authorization: Bearer _new_access_token_ 
    GData-Version: 2.1 
    X-GData-Key: key=_GData_Key_ 
    Slug: n3n1xs.mp4 
    Content-Type: multipart/related; boundary="51d366cb05b71" 
    Content-Length: 255958407 
    Connection: close 
HTTP Response: 403 
<?xml version='1.0' encoding='UTF-8'?><errors><error><domain>yt:service</domain><code>youtube_signup_required</code></error></errors> 

Obtaining channel names for Customer 
get https://gdata.youtube.com/feeds/api/suggest/username?hint=CustomerNameVT&fields=entry%2Ftitle 
    GData-Version: 2.1 
    X-GData-Key: key=_GData_Key_ 
HTTP Response: 200 
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom'><entry><title>CustomerNameVT</title></entry><entry><title>VTCustomerName</title></entry><entry><title>VTNameCustomer</title></entry><entry><title>CustomerVTName</title></entry><entry><title>CustomerNameVT1</title></entry><entry><title>NameCustomerVT</title></entry><entry><title>NameVTCustomer</title></entry></feed> 

Linking YT channel for Customer (CustomerNameVT) 
put https://gdata.youtube.com/feeds/api/users/default 
    Authorization: Bearer _new_access_token_ 
    Content-Type: application/atom+xml 
    GData-Version: 2.1 
    X-GData-Key: key=_GData_Key_ 
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:yt='http://gdata.youtube.com/schemas/2007'><yt:username>CustomerNameVT</yt:username></entry> 
HTTP Response: 403 
<errors xmlns='http://schemas.google.com/g/2005'><error><domain>GData</domain><code>ServiceForbiddenException</code><internalReason>Forbidden</internalReason></error></errors> 

Обратите внимание, что запрашиваемое имя является первым один предложенный предложить имя пользователя API. Насколько я вижу, это должно сработать. Обычно это происходит. Что случилось в этот раз?

ответ

0

API для связи учетной записи Google с новым каналом - deprecated.

Наш current recommendation предназначен для явного перехода пользователей через веб-процесс связывания, начиная с https://youtube.com/create_channel (или эквивалент m.youtube.com).

+0

Для большинства наших клиентов последовательность выглядит так: зарегистрируйтесь в учетной записи Google, авторизуйте загрузку, затем создайте канал YT. Это очень много. После предоставления разрешения Google переводит обратно на наш сайт. К сожалению, похоже, что процесс создания канала не существует. Ссылка «next», по-видимому, ограничена youtube.com. Правила межсайтового скриптинга предотвращают мониторинг. Таким образом, мы решили обработать это, чтобы запросить авторизацию, а затем с каждой загрузкой проверить, есть ли у них учетная запись YT. Если это так, мы используем его, если мы не загружаемся на наш собственный канал. – Carl

+0

Я слышал некоторые внутренние неурядицы, что если вы используете кнопку входа в Google+ для управления OAuth 2 для вас, в будущем вам может быть гарантировано, что конечным результатом будет авторизация канала, который поддерживает загрузку, поскольку каналы YouTube связанные с аккаунтами Google+, поддерживают загрузку. https://developers.google.com/+/features/sign-in –