У меня есть веб-приложение, в котором пользователь регистрируется на YouTube, чтобы авторизовать мое веб-приложение для доступа к своей учетной записи. Однако мне нужно, чтобы их имя пользователя YouTube действительно отображало их загруженные видео, и я хочу убедиться, что предоставленное ими имя пользователя YouTube соответствует учетной записи, с которой они авторизуются. Другими словами, я хочу, чтобы пользователь мог обмениваться загруженными ими видео, а не чужими. Есть ли способ сделать это?
Я делал это раньше с C # .Net со следующим кодом:
YouTubeRequestSettings yt_settings = new YouTubeRequestSettings(<devID name>, devKey, auth);
YouTubeRequest yt_request = new YouTubeRequest(yt_settings);
Uri uri = new Uri("http://gdata.youtube.com/feeds/api/users/default/uploads/?start-index=1&max-results=1");
Feed<Video> videoFeed = yt_request.Get<Video>(uri);
string uploader = "";
if (videoFeed.Entries.Count() > 0)
uploader = videoFeed.Entries.ElementAt(0).Uploader;
Но когда я пытаюсь что-то похожее с php, я получаю то, что кажется стандартным фидом:
$yt = new Zend_Gdata_YouTube($http_client,<devID name>,null,$_yt_dev_key);
$feed_url = urlencode("http://gdata.youtube.com/feeds/api/users/default/uploads/?start-index=1&max-results=1");
$videoFeed = $yt->getVideoFeed();
if(count($videoFeed) > 0)
{
$videoEntry = $videoFeed[0];
echo var_dump($videoEntry);
}
Кто-нибудь есть идеи, если я делаю что-то не так?
------------------ ОБНОВЛЕНИЕ ----------------------
У меня есть решение получить видео с YouTube для пользователя во время сеанса с проверкой подлинности. $ videoFeed = $ yt-> getuserFeed ("по умолчанию");
Тем не менее, я все еще смотрю, как получить имя загрузчика из этого, чтобы я мог выполнять дальнейшие списки видео непосредственно из javascript (как я делал с моим старым веб-приложением C # / Asp .Net).
----------- СКОРОСТНОЕ РЕШЕНИЕ ------------
Ну, это не совсем элегантное решение, но это то, над чем я работаю.
Следующее извлечет имя пользователя YouTube из объекта VideoEntry ...
$videoFeed = $yt->getuserUploads("default");
if(count($videoFeed) > 0)
{
$videoEntry = $videoFeed[0];
$v_dump = var_export($videoEntry, true);
$check_for = "http://gdata.youtube.com/feeds/api/users/";
$pos = strpos($v_dump,$check_for);
$start_pos = $pos + strlen($check_for);
$user_name = "";
for($i = $start_pos; $i < strlen($v_dump); $i++)
{
if(($v_dump[$i] == '/') or ($v_dump[$i] == '?'))
break;
$user_name .= $v_dump[$i];
}
echo $user_name;
}
По сути, я анализирую все строковые представления записи видео для первой общей части URL канала, затем получаю следующий токен в URL, который является именем пользователя. Другими словами, я нахожу этот URL в дампе var и анализирую имя пользователя:
http://gdata.youtube.com/feeds/api/users/<username>/uploads
Если бы кто-нибудь смог найти лучший и более чистый способ сделать это, это было бы здорово. Анализ такой большой строки кажется очень грязным способом сделать это.