Bir Facebook oturum geçerli olup olmadığını test?

2 Cevap php

Ben php sunucu tarafında Facebook'ta kütüphane yük oturumları doğrular emin değilim. Öyleyse ben gerçekten geçerli bir FB oturumu ve $ _COOKIE veri değişmiş bazı kraker var olduğunu sigortalanması için en iyi uygulama olup olmadığını bilmek istiyorum.

$fb = new Facebook();

if( $fb->session_expires !== 0 && $fb->session_expires < time() ) {
 die('bad and/or old session');
}

ya da kullanıcıların FB id test etmek daha iyidir?

$fb = new Facebook();

if( $fb->user ) {
 die('no Facebook User Id given');
}

EDIT: Ok, according to facebook "Your client library should perform all the necessary validation for you" by using the application secret to md5 all the params and validate the hash. So if you have a session - it is a valid FB generated one (although it can still be expired).

Eğer bir bağlantı uygulaması için giriş varsayalım. Sonra FB çıkış. Eğer app bağlanmak o başka bir sayfaya yüklerseniz o zaman aslında dışarı oturum belirtmek çerezleri değiştirmek için FB JS için herhangi bir şansı olmamıştır. Ve PHP kütüphanesinde beri aslında o da kötü değerlerini kaldırmak için bilemeyiz oturumunuzu doğrulamak için FB aramıyor.

Sonuç artık herhangi bir iyi FB gönderilen çerezleri geçerli bir set olması. Yani o app ölümcül bir hata atmak olacaktır oturumu gerektiren bir API yöntemini çağırmak için çalışmalısınız.

2 Cevap

Bir API yöntemini $facebook->getUser() Çağrı ve kullanıcı geçerli olup olmadığını kontrol etmelisiniz.

https://github.com/facebook/facebook-php-sdk/blob/master/src/base_facebook.php#L508

SDK sağlanan örnekte olduğu gibi

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

Geç cevap ama, şu anda Facebook PHP sınıfı bir getSession() yöntemi vardır:

if ($facebook->getSession()) {
    // Do stuff
}