2011-05-25 9 views
9

eski (2.x) SDK ile birisini offline_access ile kaydetmek için kullandım:Yeni Facebook PHP SDK 3.0.0'ı kullanarak OFFLINE_ACCESS ile nasıl giriş yapılır?

$session = array 
(
    'uid' => $userdata['fb_uid'], 
    'sig' => $userdata['fb_sig'], 
    'access_token' => $userdata['fb_access_token'] 
); 

$facebook->setSession($session); 

Yeni SDK'da bu işlev artık mevcut değil. Ben kullanarak giriş gerektiğini düşünüyorum:

setPersistentData ($ anahtar, $ değer)

ancak bu fonksiyon korunur ve ben 'kod' nedir bilmiyorum? Bu kullanıcıya giriş veya gerek var mı? Ya 'sig' ile oluyor? Buna artık ihtiyacım yok mu? dokümantasyon gerçekten yardımcı olmuyor çünkü

Umut birileri bu anladım!

+0

mhhh ...sadece $ facebook-> setAccessToken() kullanarak access_token ayarlamak gerekir gibi görünüyor ve bu kadar ... – Martin

cevap

21

Facebook PHP SDK v3 (see on github) ile oldukça basittir. Birisine offline_access izniyle giriş yapmak için, sizden giriş URL'sini oluşturduğunuzda sormalısınız. İşte böyle yapıyorsun.

veya değil kullanıcı oturum olmadığını kontrol

İlk belirteç çevrimdışı erişin: o değilse

require "facebook.php"; 
$facebook = new Facebook(array(
    'appId' => YOUR_APP_ID, 
    'secret' => YOUR_APP_SECRET, 
)); 

$user = $facebook->getUser(); 

if ($user) { 
    try { 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    // The access token we have is not valid 
    $user = null; 
    } 
} 

, sen offline_access soran "Giriş Facebook ile" URL yaratacak izni:

if (!$user) { 
    $args['scope'] = 'offline_access'; 
    $loginUrl = $facebook->getLoginUrl($args); 
} 

Ve sonra şablonunda bağlantı görüntülemek:

<?php if (!$user): ?> 
    <a href="<?php echo $loginUrl ?>">Login with Facebook</a> 
<?php endif ?> 

Ardından çevrimdışı erişim simgesini alabilir ve saklayabilirsiniz. bunu elde etmek için, çağrı:

$facebook->getAccessToken() 

belirteç çevrimdışı erişim kullanın

kullanıcı oturum değilken çevrimdışı erişim belirtecini kullanmak için:

require "facebook.php"; 
$facebook = new Facebook(array(
    'appId' => YOUR_APP_ID, 
    'secret' => YOUR_APP_SECRET, 
)); 

$facebook->setAccessToken("..."); 

Ve şimdi API çağrıları yapabilir Bu kullanıcı için:

$user_profile = $facebook->api('/me'); 

Yardım edin!

+0

Bu yararlı, teşekkürler, ama PHP SDK kod dışında başka bir yerde belgelenmiştir? – Brenden

+0

[Facebook geliştirici belgeleri] 'nde (https://developers.facebook.com/docs/) PHP SDK'sı için belge yoktur. Kodu okuyabilir, SDK ile verilen örneği okuyabilir ve internette başka örnekler bulabilirsiniz. Özel bir şeye ihtiyacınız var mı? – Quentin

+0

"Çevrimdışı_access" jetonu, manuel olarak giriş yapmadan nasıl oluşturulabilir? – Andrew

0

PHP SDK 2.0 (sanırım), sadece oldukça kendimiz tarafından oturumları ayarlamak daha temiz bir yaklaşımın daha fazla görünüyor gibi bu bir yeni ile çalışmalıdır

$data = $facebook->api('/me', 'GET', array('access_token' => $userdata['fb_access_token'])); 

gibi kullanabilirsiniz . Deneyebilir misin?

0

Quentin'in cevabı oldukça güzel ama eksik, sanırım. Güzel çalışıyor, ancak örneğin getUser(), o zaman çalışmıyor çünkü userId (getUser() dönen) önbelleğe alınır.

Tüm önbellekleri temizlemek ve kalıcı olarak kaydetmek için yeni bir yöntem oluşturdum.

İlgili konular