Facebook sharer.php artık ayrıntılı parametreleri kabul etmeyecek şekilde mi değiştirildi?


103

Aşağıdaki URL ile bir paylaşım açılır penceresi (window.open aracılığıyla) açıyoruz:

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

ve geçen ay içinde bilinmeyen bir noktaya kadar her şey yolundaydı.

Şimdi olan şey; açılır iletişim kutusu görünür ve sorgu dizesi parametreleri tarafından sağlanan Başlık, Açıklama, Görüntü ve URL'yi doğru bir şekilde içerir, ancak gönderi gönderildiğinde, Facebook'ta ortaya çıkan duvar gönderisinde Başlık, Açıklama ve Görsel eksiktir, ancak yine de doğru URL.

Son zamanlarda bunun çalışmasını aniden durdurabilecek değişiklikler olup olmadığını bilen var mı?

Bazı yaygın yanıtları önceden uygulamak:

  • "sharer.php URL kullanımdan kaldırıldı" - kullanım devam ediyor gibi görünüyordu ve fikir birliği büyük ölçüde ortalıkta dolaştığı düşünülüyordu - aniden çalışmayı bırakması gerektiğine dair herhangi bir belirti görmedim - bir şeyi gözden kaçırmış olabilir

  • "JavaScript SDK / bu OG meta etiketlerini kullan" - benim özel durumumda mümkün değil - sadece bana güvenin ... GERÇEKTEN istiyorsan açıklayabilirim ama gerçekten alakalı değil.

  • "Besleme iletişim kutusunu kullan" - FB sayfalarında eklerle birlikte gönderme desteği olmadığından uygun değildir


Burada başka biri tarafından günlüğe kaydedilen bir Facebook hatası var developer.facebook.com/bugs/563991033677853, bu nedenle soruna sahip başka birinin oraya gidip bu sorunun sizde olduğunu onaylayarak FB ile bunu işaretlemesine yardımcı olmasını öneririm.
tdous

Aynı sorunu yaşayan herkes için GÜNCELLEME ... Bunu Facebook'a bir hata olarak bildiren diğer insanlar, ayrıntıları önceden verme veya bilgilere yanıt verme konusunda o kadar sıcak değildi, bu yüzden yeni bir hata raporu gönderdim ve bir geliştiriciye atandı. FB'den haberleri duymayı bekliyorum. Developers.facebook.com/x/bugs/357750474364812
tdous

4
Maalesef kabul edilen cevap doğrudur. Hatanın "düzeltilmesini" 3 ay bekledikten sonra, sharer.php'nin kabul edilen davranışını değiştirdiler, böylece bu parametreler artık kullanılamaz hale geldi.
tdous

Yanıtlar:


105

Facebook artık özel parametreleri desteklemiyor sharer.php

Paylaşan kişi artık özel parametreleri kabul etmeyecek ve facebook önizlemede görüntülenen bilgileri, facebook'ta url OG meta etiketlerinden bir gönderi olarak göründüğü şekilde çekecektir.

Sharer.php yerine dialog / feeds kullanın

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 ekibinden resmi cevap


1
Kendi sorumu cevaplamak için beni döv;)
2014

32
ancak bu durumda bir uygulama kimliğine ihtiyacınız vardır. Ya sadece bir web sitesiyse?
Alman Capuano

3
Facebook'tan: Web için Besleme İletişim Kutusu, API Sürüm 2.0'da kullanımdan kaldırılmıştır. Web'de geliştiricilerin, bu eski iletişim kutuları ile aynı işlevlerin tümünü gerçekleştirebilen, ancak ek olarak Facebook Oturum Açma gerektirmeden özel Açık Grafik öyküleri yayınlayabilen daha modern Paylaşım İletişim Kutusunu kullanmaları önerilir. developer.facebook.com/docs/sharing/reference/share-dialog
RubeOnRails

Mümkünse, Facebook SDK'yı JavaScript ile kullanmanızı öneririm. Kodlamak çok daha kolay ve yukarıdaki bağlantı formunu kullanmaktan çok daha az seçici olduğunu düşünürdüm. Bir göz atın: developers.facebook.com/docs/sharing/web
LiquidDrummer

12
@LiquidDrummer Bu tür URL'leri kullanmanın tüm amacı, SDK'yı kullanmak zorunda kalmamanızdır . Sayfanıza gereksiz bir performans vuruşu ekler, FB'nin insanların mahremiyetini ihlal etmesine yardımcı olur ve düz bir etiket veya çağrıdan daha basit değildir . <a>open()
Walf

98

18 Temmuz 2017'den itibaren Facebook, kullanıcılar tarafından belirlenen özel parametreleri göz ardı etmeye karar verdi. Bu seçim, bu yanıtın sunduğu birçok olasılığı engeller ve aynı zamanda çeşitli web sitelerinde kullanılan düğmeleri kırar.

quoteVe hashtagparametreler Aralık 2018 olarak çalışıyorum.


Son zamanlarda bunun çalışmasını aniden durdurabilecek değişiklikler olup olmadığını bilen var mı?

Parametreler değişti. Şu anda kabul edilen cevap şunları belirtir:

Facebook artık özel parametreleri desteklemiyor sharer.php

Ancak bu tamamen doğru değil. Belki onları desteklemiyorlar veya onaylamıyorlar , ancak doğru adları biliyorsanız özel parametreler kullanılabilir . Bunlar şunları içerir:

  • URL (elbette) → u
  • özel resim → picture
  • özel başlık → title
  • özel alıntı → quote
  • özel açıklama → description
  • başlık (web sitesi adı olarak da bilinir) → caption

Örneğin, bu soruyu şu URL ile paylaşabilirsiniz:

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.

Dene!

Oluşturduğum bir araç daha kolay Facebook'ta URL'ler paylaşmayı kolaylaştırır özel parametrelerle. sharer.phpBağlantınızı oluşturmak için kullanabilirsiniz , sadece düğmeye basın ve açılan sekmeden URL'yi kopyalayın.


2
Çok teşekkürler, bu harika!
Nightmare_82

1
@ TakácsZsolt Sayfada JS'ye ihtiyacınız yoktur, sadece CMS'nizde veya özel kodunuzda URL sunucu tarafı oluşturabilir ve ardından kullanıcıya basit bir URL sunabilirsiniz. Resmi paylaş düğmesi kötüdür çünkü tonlarca KB JS kodu içerir ve kullanıcıları izler. Ayrıca, kendi URL'lerinizi paylaşıyorsanız, Facebook paylaşıcı parametrelerine güvenmek yerine uygun OpenGraph etiketlerini sunmanız daha iyi olur. :)
Andrea Lazzarotto

1
@Garavani, evet haklısın. Aracın yorumlarında tartışıldığı gibi, parametreleri kullanımdan kaldırmış ve kaldırmıştır.
Andrea Lazzarotto

4
Nisan 2018 itibariyle usessizce göz ardı edilenler dışındaki parametreler görünüyor .
leo

1
uYansıyan tek parametre dışındaquote
robskrob

3

Sorununuz, OpenGraph işaretçilerinin olmamasından kaynaklanıyor, dediğiniz gibi, herhangi bir nedenle uygulamanız mümkün değil.

Sizin için tek çözüm, PHP Facebook API'sini kullanmaktır .

  1. Öncelikle facebook hesabınızda uygulamayı oluşturmanız gerekir.
  2. Uygulamayı oluştururken, kodunuz için iki önemli veriye sahip olacaksınız:

    YOUR_APP_ID 
    YOUR_APP_SECRET
  3. Facebook PHP SDK'yı buradan indirin .

  4. Sitenizden içerik paylaşmak için bu kodla başlayabilirsiniz:

    <?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 Developers sitesinde daha fazla örnek bulabilirsiniz:

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


3
Haklısın Joseph ve umarım verdiğin bilgiler bu sayfayı bulan biri için yararlıdır. Bu yüzden oy verdim. Bunu cevap olarak işaretlemedim çünkü Facebook yaptıkları değişiklikleri geri almazsa PHP'ye geri dönmemiz gerektiğini zaten biliyorduk. Umduğum eksiksiz çözüm, paylaşan URL'yi kullanmanın bir yolu, eskiden nasıl çalıştığına benzer bir yoldur, şimdi veya gelecekte mevcut olmayabilir. Ama cevabınız için teşekkürler ve bu durumda birinin işine yarayacağına inanıyorum.
tdous

2

Kullanımdaki url'nizi inceliyorum:

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

ve bu farklılıkları görün:

  1. Paylaşan URL aynı değil.
  2. Dizeler farklı sıradadır. (Bunun etkileyip etkilemediğini bilmiyorum).

Bu URL dizesini kullanıyorum:

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

"Başlık" ve "özet" bölümünde, php işlevini urlencode();şu şekilde kullanıyorum:

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

Ve benim için iyi çalışıyor.


Hala senin tarafında mı çalışıyor? Örnek URL'nizi denediğimde, başlık ve özet görüntülenmiyor!
vcarel

1
@vcarel Bu yalnızca OpenGraph ile çalışır, sorun budur. Başka bir cevapta farklı bir yöntem gönderin.
Joseph Collins

@JosephCollins Farklılıklarınıza yanıt olarak: 1. "hxxp: //facebook.com/sharer.php" URL'si yalnızca "hxxp: //facebook.com/sharer/sharer.php" adresine yönlendiriyor, geriye dönük uyumlu olduğunu varsayıyorum önceki bir paylaşım özelliği ile. 2. Alanların sırası fark etmez. Her ihtimale karşı siparişinizi denedim, hala bir sorun. İlk sorumda söylediğim gibi, bu doğru bir şekilde çalıştı, sonra bir gün bizim tarafımızda hiçbir değişiklik olmadı. Facebook tarafından bir hata olarak kabul edildiğinden, bu sadece bir URL formatı sorunu değildir. Ama kesinlikle tatlı zamanlarını bu konuda bir şeyler yapmaya ayırıyorlar.
tdous

-1

URL'nizdeki &'yi% 26 olarak kodlarsanız, doğru çalışır. Sadece test edildi ve doğrulandı.


Diğer yanıtlarla örtülü ve ayrıca değer katacak kadar kapsamlı değil.
utechtzs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.