Nasıl Facebook için yeni PHP Client Library kullanılarak () gibi işlevleri require_login alabilirim?

4 Cevap php

Merhaba. Ben bir Facebook oyunu yapma ile görevli oldum, ama ben Facebook geliştirme için yeni değilim, bu yüzden ben yeni başladım. Şimdiden özür dilemek bu insanlar için bir no-beyin ise.

Ben sorun ben sitelerde gördüğünüz bütün örnekler aşağıdaki yaşıyorum ve ben okumaya çalışıyorum ben Facebook belgelerinde eksik sayfaları içine çekiliyorum. Orada Facebook için PHP İstemci Kütüphanesi yeni bir versiyonu, ve ben bulma yaşıyorum her şeyi eski istemci atıfta çünkü ben think bu.

Örneğin, ben bir çok örnek bu kodu bakın:

require 'facebook.php';
$facebook = new Facebook( array( 'appId' => '(id)', 'secret' => '(secret)' ) );
$facebook_account = $facebook->require_login();

Yok ... ama yok "require_login ()" facebook.php dosyasında sağlanan istemci kütüphanesi.

Facebook çok yakın zamanda geliştirilmesi için bazı yeni sistem dışarı haddelenmiş vardır, ama onunla başa çıkmak için her yerde herhangi bir örnek kod görmüyorum gibi ben söyleyebilirim ne gelen, görünüyor. Yeni kütüphane, bir "example.php" dosyası ile geliyor, ama sadece, diğer sitelere (ne varsayarak yaşıyorum onlar "Facebook Connect" siteler tarafından ne demek olduğu) işlevselliği "Facebook ile giriş yapın" değil ekleme gibi görünüyor sadece Facebook kendisi bir tuval sayfasında uygulamaları çalıştırmak için.

Özellikle, ne yapmam gerekiyor, kullanıcıların kendi "oyun" sayfasında göstermek, ve sonra bana alakalı geçmek var olması, onları uygulamasını yetki sağlayan iletişim kutusunu getirmek zorunda, Facebook içinde bir uygulama sayfasını ziyaret let kullanıcı hakkında bilgiler yüzden oyuna oluşturmaya başlayabilirsiniz. Ama ben yeni bir kütüphane kullanarak bunu nasıl göstereceğim herhangi öğreticiler veya örnekler bulmak için görünmüyor olabilir. Bu oldukça basit olmalıdır, ama ben barikatlar çalıştırıyorum gibi görünüyor.

Yoksa PHP istemci kitaplığı hakkında bir şey eksik? ) Benim için çalışıyor (require_login, ve bu yanlış istemci kütüphanesini falan sahip olarak benim uygulaması ile kırık bir şey var mıdır? ... Dün GitHub indirilen, bu yüzden ben var kod en son sürümüne sahip eminim, ama belki ben yanlış "facebook.php" dosyasını indirdikten ediyorum?

4 Cevap

Aşağıdaki eski require_login fonksiyonu bir yeniden yazma. Tam eski işlevselliğini çoğaltır.

function facebook_require_login($required_permissions = '')
{
  global $facebook; // NOTE GLOBAL FACEBOOK OBJECT, MUST ALREADY BE INSTANTIATED

  $user = $facebook->get_loggedin_user();
  $has_permissions = true;

  if ($required_permissions) {
    $facebook->require_frame();
    $permissions = array_map('trim', explode(',', $required_permissions));
    foreach ($permissions as $permission) {
      if (!in_array($permission, $facebook->ext_perms)) {
        $has_permissions = false;
        break;
      }
    }
  }

  if ($user && $has_permissions) return $user;

  $facebook->redirect(
    $facebook->get_login_url(Facebook::current_url(), $facebook->in_frame(),
                         $required_permissions));
}

phpfour çözüm tek doğru olanıdır - github gelen yeni php-sdk kütüphanesini kullanır beri.

En iyi çözüm, yeni facebook.php düzenlemek ve () fonksiyonu (yani ona güveniyor varolan tüm sayfaları aynı kalmak) bir require_login eklemektir

public function require_login(){
  if ( !$this->getSession() ) {
    $url = $this->getLoginUrl( array(
       'canvas' => 1,
       'fbconnect' => 0
     ));
    echo "<script type='text/javascript'>top.location.href = '$url';</script>";
  }
 else
  return $this->getUser();
}

Git göbek üzerine yeni php script sanırım facebooks API, grafik için bir wraper ama ben de bu yüzden kim bilir fql için kod gördüm. Forumları aşağı şu anda ve ben genelinde gitti IRC ölmüştü. > Api (\ me) - sizin aramak için yetki gerektiren olarak ben aynı çözüm arıyoruz edilmiştir. Eğer doğru hatırlıyorum komut başka bir sınıfını genişleten yana, sen yöntemler mevcuttur görmek için yansıma sınıf / fonksiyonunu kullanarak deneyebilirsiniz. Umarım bazı katı dokümantasyon yolda! Bu çözmek varsa bana bildirin lütfen. (Benim cep kulüpler kötü biçimlendirme için özür dilerim)

Eh, ben yeni PHP SDK'yı kullanarak uygulama yetkisi sorununa bir çözüm bulmak mümkün olmuştur. Sen benim blog yazısı kontrol edebilirsiniz here.

Kısacası, doğrulanmış bir oturum almak gerekir ve daha sonra kullanıcının ID oturum almak için işlevleri çağırabilirsiniz. Bu durumda, Graph API gelen "/ me" yolunu arayacak.