【问题标题】:How can I download HTML content of Facebook about pages如何下载 Facebook 关于页面的 HTML 内容
【发布时间】:2013-11-29 03:30:09
【问题描述】:

我开发了一个应用程序来从 Facebook 图形 API 下载用户名和 ID。但我无法获得他们的公开信息,例如生日。

所以我的方法是下载关于页面的 HTML 并从中读取生日。 我的代码如下;我在 MVC4 中开发了我的应用程序:

public ActionResult ExternalLoginCallback(string returnUrl)
    {
        AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
        if (!result.IsSuccessful)
        {
            return RedirectToAction("ExternalLoginFailure");
        }

        if (result.ExtraData.Keys.Contains("accesstoken"))
        {
            Session["facebooktoken1"] = result.ExtraData["accesstoken"];

            string fbToken = result.ExtraData["accesstoken"];

            ViewBag.TokenToview = fbToken;

            ViewBag.Id = 5;

            WebRequest myWebRequest = WebRequest.Create("https://www.facebook.com/amila.u.abeyrathne/about");
            WebResponse myWebResponse = myWebRequest.GetResponse();
            Stream ReceiveStream = myWebResponse.GetResponseStream();
            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
            StreamReader readStream = new StreamReader(ReceiveStream, encode);
            string strResponse = readStream.ReadToEnd();

        }

当我使用它时,我只会得到 facebook 登录页面的 html。如何在此应用程序中使用我的 facebook 登录会话?

【问题讨论】:

    标签: c# html facebook session download


    【解决方案1】:

    要获取此类信息,您需要访问 Facebook Graph API 端点,如提到的 here .您需要使用here 指定的必要权限生成的访问令牌才能提交工作请求。我假设您在此代码中使用的访问令牌是通过以指定方式查询 OAuth 生成的。

    【讨论】:

    • 我必须与匿名用户打交道。不仅和朋友在一起。任何 FB api 都不允许这样做。这就是为什么我试图从每个用户的页面下载 HTML。我试过这个。
    • 您不能通过 GET 请求将公共详细信息返回到 Graph API 端点吗?例如,只需将您的浏览器指向graph.facebook.com/rdeshapriya?fields=id,name,picture 就会提供一组关于我的详细信息。
    • @ramdesh- 我已经下载了你提到的数据。但是图形或任何其他 API 不提供生日、教育等其他数据。这就是我尝试下载 html 内容的原因
    【解决方案2】:

    无法从 facebook graph Search 中获取这些信息。解决方案是开发可以登录 facebook 的应用程序,并废弃已下载用户 ID 的每个用户的 facebook 墙的 HTML。抓取 HTML 后,从 htlm 读取文本是解决方案。但这不是那么准确。 about 页面中的生日和其他信息也无法以这种方式阅读,因为无法以这种方式导航到 about 页面。

    【讨论】:

      【解决方案3】:

      你的应用会话数据无法被facebook API读取,所以需要在后续请求中发送token。

      Getting FB Page data from facebook using C#

      【讨论】:

        【解决方案4】:

        我认为你的方法是错误的。当您登录网站时,会在客户端浏览器中创建会话 cookie。然后,当再次向该网站发送请求时,它会附加到每个请求标头。在客户端浏览器而不是服务器上创建的会话 cookie。

        您正在做的是从您的服务器而不是客户端向 facebook 发送请求。然后没有有效的会话 cookie 附加到您的请求。

        如果你要这样做,你必须使用 javascript 阅读 facebook 页面。但这不是推荐的方式。

        你需要装箱facebook app for your website

        然后需要Select permissions to request from users。 (对于您的情况,请使用 user_birthday

        然后使用该应用验证您的网站。然后,如果用户给予许可,您可以使用图形 api 获得您想要的任何详细信息。

        【讨论】:

          猜你喜欢
          • 2010-12-21
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          • 1970-01-01
          • 2016-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多