c# - YouTube API登录用户缩略图C#

标签 c# asp.net-mvc youtube youtube-api

我正在为登录的用户获取ProfileEntry。我设法获取了用户名等,但是我在获取用户个人资料图片时遇到了困难。当我在元素下的http://gdata.youtube.com/feeds/api/users/iamryancoke上浏览时,我在浏览器中看到了该图片,但我我不确定如何使用C#实现访问它。

编辑:
我正在使用OAuth,这是我试图找出如何从中获取缩略图的代码:

// Prepare YouTube request settings.
var settings = new YouTubeRequestSettings(youtubeSettings.AppName, youtubeSettings.DeveloperKey,
    consumer.ConsumerKey, consumer.TokenManager.ConsumerSecret, accessToken, consumer.TokenManager.GetTokenSecret(accessToken),
    youtubeSettings.User, MessagingUtilities.GetRequestUrlFromContext().StripQueryArgumentsWithPrefix("oauth_").ToString());

// Prepare YouTube request.
var youtubeRequest = new YouTubeRequest(settings);
var entry = youtubeRequest.Service.Get("http://gdata.youtube.com/feeds/api/users/default");;

return (ProfileEntry)entry;

最佳答案

我想您正在使用Google Data API .NET客户端库。

http://code.google.com/p/google-gdata/

我花了一些时间弄清楚缩略图的隐藏位置。他们掩埋得很好,但是您可以按如下方式检索个人资料照片:

var service = new YouTubeService("My YouTube Application");

service.setUserCredentials("your_email_address@gmail.com", "yourpassword");
var token = service.QueryClientLoginToken();
service.SetAuthenticationToken(token);

string feedUrl = "http://gdata.youtube.com/feeds/api/users/yourusername";

var profile = (ProfileEntry) service.Get(feedUrl);
var thumbnail = (from e in profile.ExtensionElements
                 where e.XmlName == "thumbnail"
                 select (XmlExtension) e).SingleOrDefault();
if (thumbnail != null)
{
    var thumbnailUrl = thumbnail.Node.Attributes["url"].Value;
}

获得个人资料图片的缩略图URL后,您可以使用简单的Web请求来下载和保存图片。

一个简单的例子:
string thumbnailUrl = 
    "http://i4.ytimg.com/i/sIb6065PuhCXorT1WfbJAw/1.jpg?v=bf5482";
WebRequest request = WebRequest.Create(thumbnailUrl);
WebResponse response = request.GetResponse();
Image image = Image.FromStream(response.GetResponseStream());
var extension = Path.GetExtension(thumbnailUrl).Substring(0, 4);
image.Save(@"c:\me" + extension);

关于c# - YouTube API登录用户缩略图C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055127/

相关文章:

asp.net - 当未提供路由名称时,使用 RouteLink 生成 url 的方法是什么?

asp.net-mvc - 在构建和发布时将文件添加到 bin 目录

python - 我应该使用哪个 Youtube API 范围才能访问 Youtube API v3 中我自己的视频标签

jQuery:将 wmode 设置为 Youtube 视频以进行 z-index 处理

jquery - 带有全屏模式的fancybox iframe弹出窗口中的youtube vudeos

c# - 从数组列表中获取字典

c# - 删除任务栏的关闭功能

c# - 是否有用于将控件绑定(bind)到异步数据的明确定义的模式?

c# - Azure 配置应用程序设置中的字典

asp.net-mvc - @Html.DisplayFor 为空