[英]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 頁面上發布附件
sharer.php
自定義參數共享者將不再接受自定義參數,並且 facebook 將提取在預覽中顯示的信息,就像它在 facebook 上顯示為來自 url OG 元標記的帖子一樣。
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
quote
和hashtag
參數自 2018 年 12 月起生效。有誰知道最近是否有可能突然停止工作的變化?
參數已更改。 當前接受的答案指出:
Facebook 不再支持
sharer.php
自定義參數
但這並不完全正確。 好吧,也許他們不支持或不認可它們,但是如果您知道正確的名稱,則可以使用自定義參數。 這些包括:
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"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.
我構建了一個工具,可以更輕松地使用自定義參數在 Facebook 上共享 URL 。 您可以使用它來生成您的sharer.php
鏈接,只需按下按鈕並從打開的選項卡中復制 URL。
您的問題是由於缺少標記 OpenGraph 引起的,正如您所說,由於某種原因您無法實施。
對您來說,唯一的解決方案是使用PHP Facebook API 。
創建應用程序時,您的代碼將擁有兩個關鍵數據:
YOUR_APP_ID YOUR_APP_SECRET
從這里下載 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 開發者網站中找到更多示例:
我查看了您正在使用的網址:
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); ?>
對我來說工作正常。
如果您將 URL 中的 & 編碼為 %26,則它可以正常工作。 剛剛測試和驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.