【问题标题】:Get profile image from facebook oAuth in mvc从 mvc 中的 facebook oAuth 获取个人资料图片
【发布时间】:2016-07-11 23:01:24
【问题描述】:

我已阅读以下帖子 Post 1 并按照 ak7 的回答获取 fb 图片的 url,但是当我浏览到该 url 时,它显示了一张灰色背景和一个问号的照片。然后我尝试按照Second post Mike Troinfo 的答案添加图片作为查询字符串的参数,但 info 变量没有任何与图片对应的参数。请帮助我找出从 facebook 获取用户 DP 并将其存储在数据库中的解决方案

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
WebResponse response = null;
    string pictureUrl = string.Empty;
    try
    {
        WebRequest request = WebRequest.Create(string.Format("https://graph.facebook.com/{0}/picture?type=large&redirect", loginInfo.email));
        response = request.GetResponse();
        pictureUrl = response.ResponseUri.ToString();
    }

【问题讨论】:

    标签: asp.net asp.net-mvc facebook-graph-api oauth


    【解决方案1】:

    在获取图片之前,您已经获得了用户的访问令牌。然后你点击那个网址来获取图片。请参阅此链接first

    May be this link help you to get authentication token

    最后你必须像这样点击 url。

    https://graph.facebook.com/me/picture?redirect&access_token=CAACEdEose0cBACwZBfdwRTNjsxu1HRxyhQ78lIKGonbKaNRidTtM9QjiwuVuD6DzXsNL1qLGkc1P3sHFnElQ287I1VUBfamvdV0pfBs8dDgbOShqRh2UuviXyv4ZAZAcEEeqlZCKb39nGuTZAjssXCKhS8NZBXun9KfWwZCV29s32K37ajnYIOBelHh3gZCaJsixwXkhPXiQ5ZA2MY2flK4sz

    使用这个你会得到一个json

    {
     "data": {
      "is_silhouette": true,
      "url": "https://scontent.xx.fbcdn.net/hprofile-xfa1/v/t1.0-1/s200x200/10354686_10150004552801856_220367501106153455_n.jpg?_nc_eui=ARhjdKn0xJ2BpM9I6X_JD0UDCnmaSk6REHSU6yD01EeYw9avdnIb6dqiVr74&oh=3f560f9bf95ca602bb19c2d7b8870e1a&oe=57869A50"
      }
     }
    

    然后您从该网址保存图像。有很多技术可以从 url 保存图像。

    {
    byte [] data = webClient.DownloadData("https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/v/t34.0-12/10555140_10201501435212873_1318258071_n.jpg?oh=97ebc03895b7acee9aebbde7d6b002bf&oe=53C9ABB0&__gda__=1405685729_110e04e71d9");
    
      using (MemoryStream mem = new MemoryStream(data)) 
      {
       using (var yourImage = Image.FromStream(mem)) 
       { 
          // If you want it as Png
           yourImage.Save("path_to_your_file.png", ImageFormat.Png) ; 
    
          // If you want it as Jpeg
           yourImage.Save("path_to_your_file.jpg", ImageFormat.Jpeg) ; 
       }
     } 
    
    }
    

    更多详情see在这里。

    【讨论】:

    • Anik,感谢您的帮助,但同样的问题仍然存在。它返回的网址是fbstatic-a.akamaihd.net/rsrc.php/v2/yA/r/gPCjrIGykBe.gif
    • 我可以看看你是如何点击网址的吗?
    • 和第一篇文章一模一样,也尝试根据您的回答更改请求网址
    • 举个例子吧。有什么问题。也许我能找到错误
    • 你的做法是完全错误的。我已经更新了我的答案,希望对您有所帮助。
    猜你喜欢
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多