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


103

다음과 같은 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 버그가 여기에 있습니다. developers.facebook.com/bugs/563991033677853 그래서 문제가있는 다른 사람이 FB로 가서이 문제가 있음을 확인하여이 문제를 신고하는 데 도움을 줄 것을 제안합니다.
tdous

같은 문제를 겪고있는 사람을위한 업데이트 ... Facebook에 버그로보고 한 다른 사람들은 세부 사항을 미리 제공하거나 정보에 응답하는 데 그다지 뜨겁지 않았기 때문에 새로운 버그 보고서를 다시 제출했으며 개발자에게 할당되었습니다. FB의 소식을 기다리고 있습니다. developers.facebook.com/x/bugs/357750474364812
tdous

4
슬프게도 받아 들여진 대답은 옳습니다. 버그가 "수정"될 때까지 3 개월간 기다린 후 sharer.php의 허용되는 동작을 변경하여 이러한 매개 변수를 더 이상 사용할 수 없습니다.
tdous

답변:


105

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 팀의 공식 답변


1
내 질문에 답하기 위해 나를 이길;)
tdous 2014

32
하지만이 경우 앱 ID가 필요합니다. 웹 사이트라면 어떨까요?
German Capuano 2014 년

3
Facebook에서 : 웹용 피드 대화 상자는 API 버전 2.0에서 더 이상 사용되지 않습니다. 웹에서 개발자는 이러한 이전 대화 상자와 동일한 기능을 모두 수행 할 수 있지만 Facebook 로그인없이 사용자 지정 오픈 그래프 스토리를 추가로 게시 할 수있는보다 현대적인 공유 대화 상자를 사용하는 것이 좋습니다. developers.facebook.com/docs/sharing/reference/share-dialog
RubeOnRails

가능하다면 JavaScript와 함께 Facebook SDK를 사용하는 것이 좋습니다. 코딩하는 것이 훨씬 쉽고 위의 링크 양식을 사용하는 것보다 훨씬 덜 까다 롭다고 생각합니다. 보세요 : developers.facebook.com/docs/sharing/web
LiquidDrummer

12
@LiquidDrummer는 이러한 유형의 URL을 사용하는 요점이므로 SDK를 사용할 필요가 없습니다 . 페이지에 불필요한 성능 저하를 추가하고 FB가 사람들의 개인 정보를 침해하는 데 도움 이되며 일반 태그 또는 호출 보다 간단 하지 않습니다 . <a>open()
Walf

98

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을 복사하면됩니다.


2
정말 고마워요!
Nightmare_82 2016

1
@ TakácsZsolt 페이지에 JS가 필요하지 않습니다. CMS 또는 사용자 지정 코드에서 서버 측 URL을 생성 한 다음 사용자에게 간단한 URL을 제공하기 만하면됩니다. 공식 공유 ​​버튼은 많은 양의 JS 코드 를 포함하고 있으며 사용자를 추적 하기 때문에 좋지 않습니다 . 또한 자신의 URL을 공유하는 경우 Facebook 공유자 매개 변수에 의존하는 대신 적절한 OpenGraph 태그를 제공하는 것이 좋습니다. :)
Andrea Lazzarotto

1
@Garavani, 네 당신이 맞습니다. 도구의 주석에서 논의한대로 매개 변수를 더 이상 사용하지 않고 제거했습니다.
Andrea Lazzarotto

4
2018 년 4 월 현재 다른 매개 변수 u는 조용히 무시되는 것 같습니다 .
leo

1
이외에 u유일하게 내가 반영 매개 변수입니다quote
robskrob

3

어떤 이유로 든 구현할 수 없다고 말했듯이 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


3
당신이 맞아요 Joseph, 당신이 제공 한 정보가이 페이지를 찾는 누군가에게 도움이되기를 바랍니다. 그 때문에 나는 그것을 투표했습니다. 페이스 북이 변경 사항을 되 돌리지 않으면 PHP로 돌아 가야한다는 것을 이미 알고 있었기 때문에 나는 답으로 표시하지 않았습니다. 내가 바라는 완전한 솔루션 인 공유자 URL을 사용하는 방법은 예전의 작동 방식과 유사하며 현재 또는 미래에 존재하지 않을 수 있습니다. 그러나 귀하의 답변에 감사 드리며이 상황에있는 누군가에게 유용 할 것이라고 믿습니다.
tdous

2

사용중인 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을 시도해도 제목과 요약이 표시되지 않습니다.
vcarel 2014

1
@vcarel 이것은 OpenGraph에서만 작동합니다. 그게 문제입니다. 다른 답변에 다른 방법을 게시하십시오.
Joseph Collins

@JosephCollins 귀하의 차이점에 대한 응답 : 1. URL "hxxp : //facebook.com/sharer.php"는 "hxxp : //facebook.com/sharer/sharer.php"로 리디렉션됩니다. 이전 버전과 호환되는 것으로 가정합니다. 이전 공유 기능으로. 2. 필드의 순서는 차이가 없습니다. 나는 여전히 문제가 될 경우를 대비하여 주문을 시도했습니다. 원래 질문에서 말했듯이 이것은 올바르게 작동했지만 언젠가는 변경 사항이 없었습니다. Facebook에서 버그로 받아 들여 졌으므로 URL 형식 문제가 아닙니다. 그러나 그들은 확실히 그것에 대해 무엇이든하면서 달콤한 시간을 보내고 있습니다.
tdous

-1

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


다른 답변에 의해 다루어지고 가치를 추가하기에 충분하지 않습니다.
utechtzs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.