it-swarm-vi.com

Facebook sharer.php đã thay đổi thành không còn chấp nhận các thông số chi tiết?

Chúng tôi đã mở một cửa sổ bật lên chia sẻ (thông qua window.open) với URL như

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

và cho đến khi một số điểm chưa biết trong tháng trước hoặc lâu hơn thì mọi thứ đều ổn.

Điều đang xảy ra bây giờ là; hộp thoại bật lên xuất hiện và chính xác bao gồm Tiêu đề, Mô tả, Hình ảnh và URL được cung cấp bởi các tham số chuỗi truy vấn, nhưng khi bài đăng được gửi, bài đăng trên tường kết quả trên Facebook bị thiếu Tiêu đề, Mô tả và Hình ảnh, mặc dù nó vẫn liên kết đến URL chính xác.

Có ai biết nếu có những thay đổi gần đây có thể đột nhiên ngừng hoạt động này?

Làm trống trước một số câu trả lời phổ biến:

  • "sharer.php URL không được dùng nữa" - việc sử dụng dường như vẫn tiếp tục và có vẻ như sự đồng thuận là phần lớn được coi là dính vào - tôi không thấy bất kỳ dấu hiệu cụ thể nào cho thấy nó nên ngừng hoạt động - có thể đã bỏ lỡ điều gì đó

  • "Sử dụng JavaScript SDK/các thẻ meta OG này" - không thể thực hiện được trong tình huống cụ thể của tôi - chỉ cần tin tôi ... Tôi có thể giải thích nếu bạn THỰC SỰ muốn nhưng nó thực sự không liên quan.

  • "Sử dụng hộp thoại nguồn cấp dữ liệu" - không phù hợp do thiếu hỗ trợ đăng bài với tệp đính kèm trên trang FB

96
tdous

Facebook không còn hỗ trợ các tham số tùy chỉnh trong sharer.php

Người chia sẻ sẽ không còn chấp nhận các tham số tùy chỉnh và facebook sẽ lấy thông tin đang được hiển thị trong bản xem trước giống như cách nó sẽ xuất hiện trên facebook dưới dạng bài đăng từ thẻ meta OG url.

Sử dụng hộp thoại/nguồn cấp dữ liệu thay vì 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

Câu trả lời chính thức từ nhóm fb

102
jsnjack

Bắt đầu từ ngày 18 tháng 7 năm 2017, Facebook đã quyết định bỏ qua các tham số tùy chỉnh do người dùng đặt. Lựa chọn này chặn nhiều khả năng được đưa ra bởi câu trả lời này và nó cũng phá vỡ các nút được sử dụng trên một số trang web.

Các tham số quotehashtag hoạt động kể từ tháng 12 năm 2018.


Có ai biết nếu có những thay đổi gần đây có thể đột nhiên ngừng hoạt động này?

Các thông số đã thay đổi. Câu trả lời hiện được chấp nhận:

Facebook không còn hỗ trợ các tham số tùy chỉnh trong sharer.php

Nhưng điều này là không hoàn toàn chính xác. Chà, có lẽ họ không hỗ trợ hoặc endorse chúng, nhưng tham số tùy chỉnh có thể được sử dụng nếu bạn biết tên chính xác. Bao gồm các:

  • URL (tất nhiên) → u
  • hình ảnh tùy chỉnh → picture
  • tiêu đề tùy chỉnh → title
  • báo giá tùy chỉnh → quote
  • mô tả tùy chỉnh → description
  • chú thích (còn gọi là tên trang web) → caption

Chẳng hạn, bạn có thể chia sẻ chính câu hỏi này với URL sau:

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.

Dùng thử!

Tôi đã tạo một công cụ giúp chia sẻ URL trên Facebook dễ dàng hơn với các tham số tùy chỉnh. Bạn có thể sử dụng nó để tạo liên kết sharer.php của mình, chỉ cần nhấn nút và sao chép URL từ tab mở ra.

91
Andrea Lazzarotto

Vấn đề của bạn là do thiếu các điểm đánh dấu OpenGraph, vì bạn nói rằng không thể thực hiện được vì một số lý do.

Đối với bạn, giải pháp duy nhất là sử dụng API Facebook PHP .

  1. Đầu tiên bạn phải tạo ứng dụng trong tài khoản facebook của bạn.
  2. Khi tạo ứng dụng, bạn sẽ có hai dữ liệu chính cho mã của mình:

    YOUR_APP_ID 
    YOUR_APP_SECRET
    
  3. Tải xuống Facebook PHP SDK từ tại đây .

  4. Bạn có thể bắt đầu với mã này để chia sẻ nội dung từ trang web của bạn:

    <?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>
    

Bạn có thể tìm thấy nhiều ví dụ trong trang web Nhà phát triển của Facebook:

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

3
Joseph Collins

Tôi xem lại url của bạn đang sử dụng:

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

và thấy sự khác biệt này:

  1. URL sắc nét hơn không giống nhau.
  2. Các chuỗi theo thứ tự khác nhau. (Không biết điều này có ảnh hưởng không).

Tôi sử dụng chuỗi URL này:

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

Trong phần "tiêu đề" và "tóm tắt", tôi sử dụng hàm php urlencode(); như thế này:

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

Và làm việc tốt cho tôi.

1
Joseph Collins