我们一直在使用像
这样的网址打开共享弹出窗口(通过window.open)https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
直到上个月左右的某个未知点,一切都很好。
现在发生的事情是;弹出对话框出现并正确包含查询字符串参数提供的标题,描述,图像和URL,但是当提交帖子时,Facebook上生成的墙贴文件缺少标题,描述和图像,尽管它仍然链接到正确的网址。
是否有人知道最近是否有突然停止工作的变化?
预先采取一些常见的回应:
“不推荐使用sharer.php网址” - 使用情况似乎仍在继续 似乎共识是它在很大程度上被认为是 坚持 - 我没有看到任何具体的迹象 应该突然停止工作 - 可能错过了什么
“使用JavaScript SDK /这些OG元标记” - 在我的具体情况下是不可能的 情况 - 只要相信我......如果你真的想要,我可以解释一下 这真的不相关。
“使用Feed对话框” - 由于缺乏支持而不合适 在FB页面上发布附件
答案 0 :(得分:100)
sharer.php
分享者将不再接受自定义参数和facebook 拉出预览中显示的信息相同 它将作为来自网址OG元的帖子出现在Facebook上 标签
Use dialog/feeds instead of sharer.php
https://www.facebook.com/dialog/feed?
app_id=145634995501895
&display=popup&caption=An%20example%20caption
&link=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fdialogs%2F
&redirect_uri=https://developers.facebook.com/tools/explorer
答案 1 :(得分:90)
quote
和hashtag
参数自2018年12月起生效。是否有人知道最近是否有突然停止工作的变化?
参数已更改。目前接受的答案是:
Facebook不再支持
中的自定义参数sharer.php
但不完全正确。好吧,也许他们不支持支持或支持,但自定义参数可以是如果您知道正确的名称,请使用。其中包括:
u
picture
title
quote
description
caption
例如,您可以使用以下网址分享此问题:
https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fstackoverflow.com%2Fq%2F20956229%2F1101509&picture=http%3A%2F%2Fwww.applezein.net%2Fwordpress%2Fwp-content%2Fuploads%2F2015%2F03%2Ffacebook-logo.jpg&title=A+nice+question+about+Facebook"e=Does+anyone+know+if+there+have+been+recent+changes+which+could+have+suddenly+stopped+this+from+working%3F&description=Apparently%2C+the+accepted+answer+is+not+correct.
我使用自定义参数构建a tool,这样可以更轻松地在Facebook上分享网址。您可以使用它来生成sharer.php
链接,只需按下按钮并从打开的标签中复制网址。
答案 2 :(得分:3)
你的问题是由缺少标记OpenGraph引起的,正如你所说,由于某些原因你不可能实现它。
对您而言,唯一的解决方案是使用 PHP Facebook API 。
创建应用程序时,您的代码将包含两个关键数据:
YOUR_APP_ID
YOUR_APP_SECRET
从here下载Facebook PHP SDK。
您可以从此代码开始,以便从您的网站分享内容:
<?php
// Remember to copy files from the SDK's src/ directory to a
// directory in your application on the server, such as php-sdk/
require_once('php-sdk/facebook.php');
$config = array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
'allowSignedRequest' => false // optional but should be set to false for non-canvas apps
);
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
?>
<html>
<head></head>
<body>
<?php
if($user_id) {
// We have a user ID, so probably a logged in user.
// If not, we'll get an exception, which we handle below.
try {
$ret_obj = $facebook->api('/me/feed', 'POST',
array(
'link' => 'www.example.com',
'message' => 'Posting with the PHP SDK!'
));
echo '<pre>Post ID: ' . $ret_obj['id'] . '</pre>';
// Give the user a logout link
echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>';
} catch(FacebookApiException $e) {
// If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
$login_url = $facebook->getLoginUrl( array(
'scope' => 'publish_stream'
));
echo 'Please <a href="' . $login_url . '">login.</a>';
error_log($e->getType());
error_log($e->getMessage());
}
} else {
// No user, so print a link for the user to login
// To post to a user's wall, we need publish_stream permission
// We'll use the current URL as the redirect_uri, so we don't
// need to specify it here.
$login_url = $facebook->getLoginUrl( array( 'scope' => 'publish_stream' ) );
echo 'Please <a href="' . $login_url . '">login.</a>';
}
?>
</body>
</html>
您可以在Facebook Developers网站上找到更多示例:
答案 3 :(得分:1)
我查看了您正在使用的网址:
https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE
并看到这种差异:
我使用此URL字符串:
http://www.facebook.com/sharer.php?s=100&p[url]=http://www.example.com/&p[images][0]=/images/image.jpg&p[title]=Title&p[summary]=Summary
在“标题”和“摘要”部分中,我使用php函数urlencode();
,如下所示:
<?php echo urlencode($detail->title); ?>
对我来说工作正常。
答案 4 :(得分:-1)
如果您将URL中的&编码为%26,则它可以正常工作。刚刚经过测试和验证。