How Facebook link preview happens?

后端 未结 4 1634
小鲜肉
小鲜肉 2021-02-01 17:47

When you type a URL into facebook, it automatically comes up with the \"post a link\" feature. With most websites, it automatically loads a selection of images it pulls from som

相关标签:
4条回答
  • 2021-02-01 18:05

    Surprisingly there aren’t that many services out there doing this. As the previous commenter posted, your browser can’t do this without a server element.

    So, the workflow is really this:

    1. Parse the inserted text to test it’s a valid URL
    2. Whiz that URL value via AJAX to a bespoke service or roll your own.
    3. The service (mine is written in .Net) loads up the page in memory and parses it with an DOM parser. I use the HTML Agility pack you could use AngleSharp etc.
    4. You need to extract the Open graph meta elements with (typically) fall back to standard Meta Title/ Description et all.
    5. Pack up all that OG goodness and return this model via AJAX
    6. Put the returned values on screen as a preview.
    7. If accepted write the logic to insert the values into your DB

    If you are not up to creating the server object, there are third-party services that can do the retrieval bits:

    http://unfurl.oroboro.com/

    https://guteurls.de/

    best of luck.

    0 讨论(0)
  • 2021-02-01 18:20

    @Keshan.

    I developed myself a Facebook Link Preview with PHP and jQuery that is on my website. Take a look... The source code is free... I didn't post the whole code here because they are many files... But if you prefer the code to be posted here, tell me and I'll post.

    It's available on Github https://github.com/LeonardoCardoso/Facebook-Link-Preview

    Facebook Link Preview - PHP + jQuery

    0 讨论(0)
  • 2021-02-01 18:23

    I think following steps are involved

    • Using Javascript find the links in the written text
    • From the found links get the last link in the text (FB shows only for last link)
    • Using AJAX send this link detail to a server side page (PHP/ASP/JSP etc.)
    • The server side page gets the required data (from Meta tags) including
      • Title (Preferably Open graph og:title if missing from <title>
      • Description (Preferably Open graph og:description if missing from <meta name="description" ....
      • Images (Preferably Open graph og:image if missing from <img src=....
    • In PHP you can get these datas either using curl or file_get_contents and parse for required data detailed above. Not sure about other Language.
    • Show the result thus found in the AJAX request.

    Additionally I think FB stores the data, once found, in database and 1st queries there. This helps them to get faster result and hence same article shared and liked generate the image and details from the stored data.

    You will need Javascript to show this preview in runtime (while you write in the textarea). However if you only need it after posting of data it can be done with pure server side language (you can avoid javascript) and following above steps just remove AJAX call.

    0 讨论(0)
  • 2021-02-01 18:30

    Due to security restrictions, JavaScript cannot load any page from any server. Facebook actually asks the Facebook servers for information about that page, and the servers in turn query the page to extract the information. You, too, will need a server-side implementation of this.

    Aside from that, it's fairly simple: use an HTTP client library for your language of choice to connect to the provided URL, then use an HTML parsing library to extract the title tag, identify a significant piece of text in the body tag, and extract the img tag sources that seem the most appropriate.

    Once your server is able to extract information about a page, it's a fairly simple exercise to call it through AJAX.

    0 讨论(0)
提交回复
热议问题