Как я могу поделиться PHP сгенерированным изображением со случайным именем через Facebook поделиться? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь разрешить пользователю обмениваться случайно сгенерированным изображением на Facebook через Facebook. Я пытался добиться этого, помещая тег через jquery скрипт после того, как изображение было сгенерировано:

$('<meta property="og:image" content="bin/images/'+ result +'.png" />').appendTo('head');

Но это не работает - скрипт не видит изображение, сгенерированное после загрузки страницы.

Я также пытался разместить скрипт на сайте после добавления изображения:

$('<meta property="og:image" content="bin/images/'+ result +'.png" />').appendTo('head');
$('<script>(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0"; fjs.parentNode.insertBefore(js, fjs); }(document, \'script\', \'facebook-jssdk\'));</script>').prependTo('body');

Но это тоже не работает. Есть ли способ сделать это?

/// EDITED

Я пробовал другой подход, поэтому сейчас я создаю ИЗОБРАЖЕНИЕ:

<?php

header("Content-type: image/png");
$string = $_POST['text'];
$name = $_POST['name'];
$im     = imagecreatefrompng("template.png");
$orange = imagecolorallocate($im, 168, 255, 0);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 130, $px, 160, $string, $orange);
imagepng($im, "images/{$name}.png");
imagedestroy($im); 

?>

Затем я создаю совершенно новый. php для совместного использования URL:

<?php

$result = $_POST["result"];
$filename = "{$result}.php";


$myfile = fopen("{$filename}", "w") or die("Unable to open file!");

$txt = "<!DOCTYPE html>
        <html>
        <head>

    <meta property=\"og:url\" content=\"https://myurl.com\" />
    <meta property=\"og:type\" content=\"Game\" />
    <meta property=\"og:title\" content=\"Game name\" />
    <meta property=\"og:description\" content=\"Game description\" />
    <meta property=\"og:image\" content=\"https:/myurl.com/bin/images/{$result}.png\" />
    <meta property=\"og:image:width\" content=\"320\" />
    <meta property=\"og:image:height\" content=\"320\" />
    </head>
    <body></body></html>";

fwrite($myfile, $txt);

fclose($myfile);

?>

И в конце я добавляю скрипт совместного доступа к Facebook через jQuery:

$('<script>(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0"; fjs.parentNode.insertBefore(js, fjs); }(document, \'script\', \'facebook-jssdk\'));</script>').prependTo('body');
$('<div class="fb-share-button" data-href="https://myurl.com/'+ result +'" data-layout="button_count"> </div>').appendTo('.pop-up');

Он работает нормально - я имею в виду, что он генерирует изображение и URL, а затем делится URL - но Facebook видит старое изображение домашней страницы ..: / Так как я могу обновить это изображение для каждого сгенерированного URL?

...