[javascript] Facebook sharer.php가 더 이상 자세한 매개 변수를 허용하지 않도록 변경 되었습니까?

다음과 같은 URL로 공유 팝업 (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의 결과 벽 게시물에 제목, 설명 및 이미지가 누락되지만 여전히 올바른 URL.

갑자기 작동을 멈출 수있는 최근 변경 사항이 있는지 아는 사람이 있습니까?

몇 가지 일반적인 응답을 선점합니다.

  • “sharer.php URL이 더 이상 사용되지 않습니다.”-사용이 계속되는 것처럼 보였고 대부분 계속 유지되는 것으로 간주된다는 것이 합의 된 것처럼 보였습니다. 갑자기 작동이 중단되어야한다는 구체적인 표시를 보지 못했습니다. 뭔가를 놓쳤을 수도 있습니다.

  • “JavaScript SDK /이 OG 메타 태그 사용”-내 특정 상황에서는 불가능합니다. 저를 믿으세요. 정말로 원하면 설명 할 수 있지만 실제로는 관련이 없습니다.

  • “피드 대화 상자 사용”-FB 페이지에 첨부 파일이있는 게시를 지원하지 않기 때문에 적합하지 않습니다.



답변

Facebook은 더 이상 사용자 지정 매개 변수를 지원하지 않습니다. sharer.php

공유자는 더 이상 맞춤 매개 변수를 허용하지 않으며 facebook은 url OG 메타 태그에서 게시물로 Facebook에 표시되는 것과 동일한 방식으로 미리보기에 표시되는 정보를 가져옵니다.

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으로 작동합니다.


갑자기 작동을 멈출 수있는 최근 변경 사항이 있는지 아는 사람이 있습니까?

매개 변수가 변경되었습니다. 현재 허용되는 답변은 다음과 같습니다.

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.

시도 해봐!

나는 구축 한 도구 쉽게 페이스 북에 URL을 공유 할 수 있습니다 사용자 정의 매개 변수를. sharer.php링크 를 생성하는 데 사용할 수 있습니다 . 버튼을 누르고 열리는 탭에서 URL을 복사하면됩니다.


답변

어떤 이유로 든 구현할 수 없다고 말했듯이 OpenGraph 마커가 없기 때문에 문제가 발생합니다.

당신에게 유일한 해결책은 PHP Facebook API 를 사용하는 것 입니다.

  1. 먼저 페이스 북 계정에서 애플리케이션을 만들어야합니다.
  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


답변

사용중인 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. 문자열의 순서가 다릅니다. (이것이 영향을 미치는지 모르겠습니다).

이 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

“제목”및 “요약”섹션에서 urlencode();다음과 같이 php 함수를 사용합니다 .

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

그리고 나를 위해 잘 작동합니다.


답변

URL의 &를 % 26으로 인코딩하면 제대로 작동합니다. 방금 테스트하고 확인했습니다.


답변