我正在使用来自codeplex的facebook C#sdk并尝试下载用户的个人资料图片.
我知道我可以从这个:
http://graph.facebook.com/UID/picture?type=large
但是这个URL然后发布到具有实际图片的第二个URL.我如何获得第二个URL?stackoverflow上有一篇关于解析json的帖子,我该怎么做?
var app = new FacebookApp();
var me = (IDictionary<string, object>)app.Get("me");
string firstName = (string)me["first_name"];
string lastName = (string)me["last_name"];
string gender = (string)me["gender"];
string email = (string)me["email"];
long facebook_ID = app.UserId;
Run Code Online (Sandbox Code Playgroud)
ak7*_*ak7 14
您可以让浏览器使用图形api url - graph.facebook.com/UID/picture?type=large为您获取图像,或者使用类似下面的方法来获取缓存的网址
public static string GetPictureUrl(string faceBookId)
{
WebResponse response = null;
string pictureUrl = string.Empty;
try
{
WebRequest request = WebRequest.Create(string.Format("https://graph.facebook.com/{0}/picture", faceBookId));
response = request.GetResponse();
pictureUrl = response.ResponseUri.ToString();
}
catch (Exception ex)
{
//? handle
}
finally
{
if (response != null) response.Close();
}
return pictureUrl;
}
Run Code Online (Sandbox Code Playgroud)
在这里它运作良好,我正在使用它
功能是
private Image getUrlImage(string url)
{
WebResponse result = null;
Image rImage = null;
try
{
WebRequest request = WebRequest.Create(url);
result = request.GetResponse();
Stream stream = result.GetResponseStream();
BinaryReader br = new BinaryReader(stream);
byte[] rBytes = br.ReadBytes(1000000);
br.Close();
result.Close();
MemoryStream imageStream = new MemoryStream(rBytes, 0, rBytes.Length);
imageStream.Write(rBytes, 0, rBytes.Length);
rImage = Image.FromStream(imageStream, true);
imageStream.Close();
}
catch (Exception c)
{
//MessageBox.Show(c.Message);
}
finally
{
if (result != null) result.Close();
}
return rImage;
}
Run Code Online (Sandbox Code Playgroud)
它的召唤是
profilePic = getUrlImage("https://graph.facebook.com/" + me.id + "/picture");
Run Code Online (Sandbox Code Playgroud)
您实际上并不需要第二个URL.第二个URL只是一个缓存网址.只需使用graph.facebook.com/username/picture?type=large网址即可.较长的缓存网址可能会发生变化,因此无论如何它都不是图像的可靠来源.
| 归档时间: |
|
| 查看次数: |
19769 次 |
| 最近记录: |