有Facebook的sharer.php更改为不再接受详细的参数?

我们已经打开了一个共享popup窗口(通过window.open)的URL像

https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE 

直到上个月的某个未知点,一切都很好。

现在发生的事情是; popup对话框出现,并正确包括由查询string参数提供的标题,描述,图像和URL,但是当提交post时,在Facebook上产生的贴子缺less标题,描述和图像,尽pipe它仍然链接到正确的url。

有谁知道是否有最近的变化,可能突然停止这个工作?

抢先一些常见的反应:

  • “sharer.phpurl被弃用” – 使用似乎继续下去,似乎共识是它基本上被认为是坚持 – 我还没有看到任何具体的迹象表明,它应该突然停止工作 – 可能已经错过了一些东西

  • “使用JavaScript SDK /这些OG元标签” – 在我的具体情况下是不可能的 – 只要相信我…我可以解释你是否真的想要,但实际上并不相关。

  • “使用提要对话框” – 由于缺乏FB页面附件的发布支持,因此不合适

Facebook不再支持sharer.php自定义参数

共享器将不再接受自定义参数,Facebook将以预览方式显示的信息与从Facebook OG元标记中显示在Facebook上的方式相同。

使用dialog / feeds而不是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 

fb团队的官方答复

从2017年7月18日起,Facebook决定不考虑用户设置的自定义参数。 这个select阻止了这个答案提供的许多可能性,它也打破了几个网站上使用的button。

quote参数仍然有效。


有谁知道是否有最近的变化,可能突然停止这个工作?

参数已经改变。 目前接受的答案是:

Facebook不再支持sharer.php自定义参数

但这不完全正确。 那么,也许他们不支持认可他们,但如果你知道正确的名字, 可以使用自定义参数 。 这些包括:

  • URL(当然)→ u
  • 自定义图像→ picture
  • 自定义标题→ title
  • 自定义报价→ quote
  • 自定义描述→ description
  • 标题(又名网站名称)→ caption

例如,您可以通过以下URL分享这个问题:

 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&quote=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. 

尝试一下!

我已经构build了一个工具 ,可以更轻松地在Facebook上使用自定义参数分享url 。 您可以使用它来生成您的sharer.php链接,只需按下button,并从打开的选项卡复制URL。

你的问题是由于缺乏OpenGraph标记而引起的,正如你所说的,由于某种原因你不可能实现。

对你而言,唯一的解决scheme是使用PHP Facebook API

  1. 首先,您必须在您的Facebook帐户中创build应用程序。
  2. 在创build应用程序时,您将拥有两个关键代码数据:

     YOUR_APP_ID YOUR_APP_SECRET 
  3. 从这里下载Facebook PHP SDK。

  4. 您可以从以下代码开始,从您的网站分享内容:

     <?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网站上find更多的例子:

https://developers.facebook.com/docs/reference/php

我在使用中检查您的url:

 https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE 

并看到这种差异:

  1. 共享者URL不相同。
  2. string的顺序不同。 (不知道这是否影响)。

我使用这个URLstring:

 http://www.facebook.com/sharer.php?s=100&p[url]=http://www.example.com/&p[images][0]=http://img.dovov.comimage.jpg&p[title]=Title&p[summary]=Summary 

在“title”和“summary”部分,我使用了php函数urlencode(); 喜欢这个:

 <?php echo urlencode($detail->title); ?> 

并为我工作得很好。