我正在获取一个登录用户的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);