簡體   English   中英

Facebook sharer.php 是否更改為不再接受詳細參數?

[英]Has Facebook sharer.php changed to no longer accept detailed parameters?

我們一直在打開一個共享彈出窗口(通過 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 

直到上個月左右的某個未知時間點,一切都很好。

現在正在發生的是; 彈出對話框出現並正確包含查詢字符串參數提供的標題、描述、圖像和 URL,但是當提交帖子時,Facebook 上的結果牆帖子缺少標題、描述和圖像,盡管它仍然鏈接到正確的網址。

有誰知道最近是否有可能突然停止工作的變化?

先發制人的一些常見反應:

  • “sharer.php URL 已被棄用” - 使用似乎仍在繼續,而且似乎一致認為它在很大程度上被認為是堅持使用 - 我沒有看到任何具體的跡象表明它應該突然停止工作 - 可能錯過了一些東西

  • “使用 JavaScript SDK/這些 OG 元標記” - 在我的特定情況下不可能 - 只要相信我......我可以解釋你是否真的想要,但它真的不相關。

  • “使用提要對話框” - 不適合,因為不支持在 FB 頁面上發布附件

Facebook 不再支持sharer.php自定義參數

共享者將不再接受自定義參數,並且 facebook 將提取在預覽中顯示的信息,就像它在 facebook 上顯示為來自 url OG 元標記的帖子一樣。

使用對話框/提要而不是 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 決定忽略用戶設置的自定義參數。 此選擇會阻止此答案提供的許多可能性,並且還會破壞多個網站上使用的按鈕。

quotehashtag參數自 2018 年 12 月起生效。


有誰知道最近是否有可能突然停止工作的變化?

參數已更改。 當前接受的答案指出:

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.

試試吧!

我構建了一個工具,可以更輕松地使用自定義參數在 Facebook 上共享 URL 您可以使用它來生成您的sharer.php鏈接,只需按下按鈕並從打開的選項卡中復制 URL。

您的問題是由於缺少標記 OpenGraph 引起的,正如您所說,由於某種原因您無法實施。

對您來說,唯一的解決方案是使用PHP Facebook API

  1. 首先,您必須在您的 facebook 帳戶中創建應用程序。
  2. 創建應用程序時,您的代碼將擁有兩個關鍵數據:

     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 開發者網站中找到更多示例:

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

我查看了您正在使用的網址:

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. 字符串的順序不同。 (不知道有沒有影響)。

我使用這個 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); ?>

對我來說工作正常。

如果您將 URL 中的 & 編碼為 %26,則它可以正常工作。 剛剛測試和驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM