Last active
December 11, 2024 20:33
-
-
Save FrostyX/81d58222d1e835e24013 to your computer and use it in GitHub Desktop.
Facebook API - Force facebook to reload cache from your website
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class FacebookDebugger | |
{ | |
/* | |
* https://developers.facebook.com/docs/opengraph/using-objects | |
* | |
* Updating Objects | |
* | |
* When an action is published, or a Like button pointing to the object clicked, | |
* Facebook will 'scrape' the HTML page of the object and read the meta tags. | |
* The object scrape also occurs when: | |
* | |
* - Every 7 days after the first scrape | |
* | |
* - The object URL is input in the Object Debugger | |
* http://developers.facebook.com/tools/debug | |
* | |
* - When an app triggers a scrape using an API endpoint | |
* This Graph API endpoint is simply a call to: | |
* | |
* POST /?id={object-instance-id or object-url}&scrape=true | |
*/ | |
public function reload($url) | |
{ | |
$graph = 'https://graph.facebook.com/'; | |
$post = 'id='.urlencode($url).'&scrape=true'; | |
return $this->send_post($graph, $post); | |
} | |
private function send_post($url, $post) | |
{ | |
$r = curl_init(); | |
curl_setopt($r, CURLOPT_URL, $url); | |
curl_setopt($r, CURLOPT_POST, 1); | |
curl_setopt($r, CURLOPT_POSTFIELDS, $post); | |
curl_setopt($r, CURLOPT_RETURNTRANSFER, 1); | |
curl_setopt($r, CURLOPT_CONNECTTIMEOUT, 5); | |
$data = curl_exec($r); | |
curl_close($r); | |
return $data; | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$fb = new FacebookDebugger(); | |
$fb->reload('http://example.com/'); | |
$fb->reload('http://example.com/foo'); | |
$fb->reload('http://example.com/bar'); | |
?> |
I wrote that code in high school nearly ten years ago (I published it later) and I would never guess that it would be still useful even today.
Thank all of you guys.
Must have a valid access token or a valid url_hmac
can confirm this still works in 2020, here a python implementation extending the Facebook Graph SDK
class GraphAPIExt(GraphAPI): def scrape_url(self, url, **kwargs): assert url, "object URL is required" args = { "id": url, "scrape": True } args.update(kwargs) return self.request("/", method="POST", args=args)
does this update the image
I've tried another simple approach. get the response but it does not seem to update anything
python code:
res = requests.post(f'{host}/?id={uri}&scrape=true&access_token={token}')
yes, this is what we are using right now in our production environment
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
can confirm this still works in 2020, here a python implementation extending the Facebook Graph SDK