2013-06-05 2 views
0

Мы по-прежнему используем API V2 YouTube. После авторизации пользователя у меня есть следующий код.YouTubeProfile-> getUsername() возвращает gibberish

$token = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token'], $client->getHttpClient()); 
$youTubeService = $this->Youtube->_getClient($token); 
$profile = $youTubeService->getUserProfile('default'); 
$username = $profile->getUsername()->getText(); 

Однако это не возвращает действительное имя пользователя. Он возвращает строку тарабарщины, такую ​​как «HV1lXoWFbpKgumhGZxurEg»

Что я делаю неправильно? Как я могу получить фактическое имя пользователя? Мне нужно это для определения URL-адреса пользователей. Добавление пользователя возвращенное к следующему URL дает ошибку Invalid Имя пользователя

http://www.youtube.com/profile_videos?user=HV1lXoWFbpKgumhGZxurEg

ответ

1

Не каждый счет имеет уникальное имя, вы не должны зависеть от имен пользователей, но вместо этого на канале идентификаторами.

От API documents:

Самый большой вынос для разработчиков, использующих старую API данных v2 является то, что вы должны знать, что не каждый канал YouTube имеет уникальное имя. К счастью, каждый канал YouTube, как гарантируется, имеет уникальный идентификатор канала, связанный с ним, представленный значением в теге <yt:channelId>, и это значение, которое мы рекомендуем разработчикам вместо имени пользователя. Например, если у вас есть база данных, которая сопоставляет имена пользователей YouTube с информацией об этом канале, ваши старые записи должны продолжать работать. (Существующие каналы не потеряют свои имена пользователей.) Однако со временем становится все более вероятным, что вам придется работать с каналами, которые нельзя однозначно идентифицировать по имени пользователя.

Пара факторов упрощает переход от имен пользователей к идентификаторам каналов. Во-первых, API данных v2 принимает идентификаторы каналов в URL-адресах запросов, где бы он не принимал имена пользователей YouTube, а это означает, что вы можете легко поменять идентификатор канала на существующий код. Например, поскольку UC_x5XG1OV2P6uZZ5FSM9Ttw является идентификатор канала для канала с наследием имени пользователя GoogleDevelopers, следующие два URL-адреса являются эквивалентными запросы API:

https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1 https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1

Другое дело, иметь в виду, что всякий раз, когда вы делая аутентифицированные запросы v2, вам никогда не нужно указывать имя авторизованного канала при создании URL-адресов запросов. Вы всегда можете использовать значение по умолчанию вместо имени пользователя (или идентификатора канала). Поэтому, если вы хотите, чтобы вы, например, загрузили фид для видеообъявления для текущего авторизованного пользователя, вы можете сделать это по адресу https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1.

+0

Спасибо за информацию. Похоже, что то, что возвращается из вызова getUsername(), является идентификатором канала? Если да, есть ли способ определить URL канала из этого значения? – thefreeman

+0

Думаю, я сам это понял. Кажется, что добавление идентификатора канала на самом деле, youtube.com/channel/UC загружает правильный канал. Спасибо за вашу помощь! – thefreeman

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