使用来自codeplex的facebook c#sdk获取用户个人资料照片

Bru*_*uce 9 facebook-c#-sdk

我正在使用来自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)


Afn*_*hir 8

在这里它运作良好,我正在使用它

功能是

  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)


Nat*_*ten 5

您实际上并不需要第二个URL.第二个URL只是一个缓存网址.只需使用graph.facebook.com/username/picture?type=large网址即可.较长的缓存网址可能会发生变化,因此无论如何它都不是图像的可靠来源.