2011-07-28 18 views
2

私は自分のアカウントにアクセスするために自分のWebアプリケーションを認証するためにYouTubeにログインしているWebアプリケーションを持っています。しかし、自分のアップロードした動画を実際に一覧表示するにはYouTubeのユーザー名が必要です。提供するYouTubeのユーザー名が、認証に使用したアカウントと一致していることを確認します。言い換えれば、私は、アップロードしたビデオを他の人と共有することができないようにしたい。これを行う方法はありますか?YouTubeのPHP API: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); 
} 

誰かが私が何か間違っているのかどうか分かりませんか?

------------------アップデート----------------------

I認証されたセッションでユーザーのためにYouTubeビデオフィードを取得するソリューションをお持ちです。 $ videoFeed = $ yt-> getuserFeed( "default"); しかし、私はまだこれからアップローダ名を取得する方法を検討していますので、私は古いC#/ Asp .Net Webアプリケーションで行ったように、JavaScriptから直接ビデオリストを直接実行できます。

----------- RATHER ROUGH SOLUTION ------------

まあ、これは正確にエレガントなソリューションではありませんが、それはどのような私です働いている。

以下は

$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の最初の一般的な部分のための可変文字列表現を解析しています...のVideoEntryオブジェクトからユーチ​​ューブのユーザー名を抽出しますユーザー名であるURLの次のトークンを取得します。言い換えれば、私は、VaRのダンプにこのURLを見つけると、ユーザー名を解析しています:

http://gdata.youtube.com/feeds/api/users/<username>/uploads 

誰もがそれを行うには良いとクリーンな方法を見つけることができれば、それは素晴らしいことです。このような大きな文字列を解析することは、これを行うための非常に汚い方法のようです。

答えて

1

これを試してみてください:

$user = $yt->getUserProfile('default'); 
$username = $user->getUserName(); 
+0

申し訳ありませんが、あなたは$ yt-で最初にV2を起動する必要があるかもしれません> setMajorProtocolVersion(2); – Patrick