0

因此,我正在制作一个涉及通过 Facebook 开放图形协议共享的 iPhone 应用程序。但是,在为带有元标记的对象创建动态网页时,我遇到了困难。我遇到了这篇文章,动态生成 Facebook Open Graph 元标记,并尝试使用该代码,但它不起作用。

这是我的 food.php 对象网页。

<?php

$params = array();
if(count($_GET) > 0) {
    $params = $_GET;
} else {
    $params = $_POST;
}

// defaults
if($params['type'] == "") $params['type'] = "food";
if($params['title'] == "") $params['title'] = "default title";
if($params['image'] == "") $params['image'] = "blank";
if($params['description'] == "") $params['description'] = "default description";

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#">

        <!-- Open Graph meta tags -->
        <meta property="fb:app_id" content="MY_APP_ID" />
        <meta property="og:url" content="http://mysite.com/index.php?type=<?php echo $params['type']; ?>&title=<?php echo $params['title']; ?>&image=<?php echo $params['image']; ?>&description=<?php echo $params['description']; ?>"/>
        <meta property="og:type" content="MY_APP_NAME_SPACE:<?php echo $params['type']; ?>"/>
        <meta property="og:title" content="<?php echo $params['title']; ?>"/>
        <meta property="og:image" content="http://mysite.com/img/<?php echo $params['image']; ?>.jpg"/>
        <meta property="og:description" content="<?php echo $params['description']; ?>"/>

    </head>
</html>

使用此代码驻留在我的服务器中,我尝试使用带有此 url 的 fb 对象调试器工具访问该页面。

http://mysite.com/food.php?fb:app_id=MY_APP_ID
&og:type=MY_APP_NAME_SPACE:food
&og:title=Pizza
&og:description="Pizza"
&og:image=http://mysite.com/img/someImage.jpg

*注意网址中没有空格

并且调试器抛出此错误

解析 URL 时出错:解析输入 URL 时出错,没有数据被抓取。

我想问题出在我输入的网址上,因为该工具无法解析它?如果不是,那会是什么?

4

1 回答 1

0
if($params['description'] == "") $params['description'] = "default description";

“默认描述”实际上应该是您对观众将看到的网站的描述,因为这就是 facebook 在您的页面上抓取的内容。

变量 $params['description']; ?> 将在您的字符串中输出实际描述。”/>

echo 语句就像打印出实际的描述,是 facebook 的调试器将看到的。

您需要通过 URL 传递值,例如 mysite.com/pizza.php?title=pizza&description=whateveryourdescriptionis,以便 facebook 抓取该特定页面

于 2017-10-06T19:44:17.410 回答