2011-05-25 5 views
9
पुराने (2.x) एसडीके के साथ

मैंने इसे ऑफ़लाइन_एसीएएस के साथ किसी को लॉग इन करने के लिए उपयोग किया:नए फेसबुक PHP एसडीके 3.0.0 का उपयोग कर OFFLINE_ACCESS के साथ कैसे लॉगिन करें?

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

$facebook->setSession($session); 

नए एसडीके में यह फ़ंक्शन अब मौजूद नहीं है। मुझे लगता है कि मुझे इसका उपयोग करके लॉगिन करना होगा:

setPersistentData ($ key, $ value)

लेकिन यह फ़ंक्शन सुरक्षित है और मुझे नहीं पता कि 'कोड' क्या है? क्या मुझे उपयोगकर्ता को लॉग इन करने के लिए इसकी आवश्यकता है या नहीं? और 'सिग' के साथ क्या चल रहा है? क्या मुझे अब इसकी आवश्यकता नहीं है?

आशा है कि किसी ने पहले ही यह पता लगाया है क्योंकि दस्तावेज़ वास्तव में मदद नहीं करता है!

+0

mhhh ...ऐसा लगता है कि आपको केवल $ facebook-> setAccessToken() का उपयोग करके access_token सेट करना होगा और यह है ... – Martin

उत्तर

21
फेसबुक पीएचपी एसडीके v3 ( see on github) के साथ

, यह बहुत सरल है। offline_access अनुमति के साथ किसी को लॉग इन करने के लिए, जब आप लॉगिन यूआरएल उत्पन्न करते हैं तो आप उससे पूछते हैं। यहां आप यह कैसे करते हैं।

ऑफ़लाइन पहुँच टोकन

सबसे पहले आप की जाँच उपयोगकर्ता प्रवेश किया गया हो जाओ में है या नहीं:

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; 
    } 
} 

अगर वह नहीं है, आप "लॉगिन Facebook के साथ" यूआरएल offline_access के लिए पूछ उत्पन्न अनुमति:

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

और फिर अपने खाके में लिंक प्रदर्शित:

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

तो फिर तुम ऑफ़लाइन पहुँच टोकन प्राप्त है और यह स्टोर कर सकते हैं। इसे पाने के लिए, फोन:

$facebook->getAccessToken() 

ऑफ़लाइन पहुँच टोकन का प्रयोग करें

ऑफ़लाइन पहुँच टोकन का उपयोग करने के उपयोगकर्ता के लॉग इन नहीं कर रहा है:

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

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

और अब आप एपीआई कॉल कर सकते हैं इस उपयोगकर्ता के लिए:

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

आशा है कि मदद करता है!

+0

यह उपयोगी है, धन्यवाद, लेकिन PHP एसडीके कोड के अलावा कहीं और दस्तावेज है? – Brenden

+0

[फेसबुक डेवलपर प्रलेखन] में PHP एसडीके के लिए कोई दस्तावेज नहीं है (https://developers.facebook.com/docs/)। आप कोड पढ़ सकते हैं, एसडीके के साथ प्रदान किए गए उदाहरण को पढ़ सकते हैं और इंटरनेट पर कुछ अन्य उदाहरण ढूंढ सकते हैं। क्या आपको कुछ और विशिष्ट चाहिए? – Quentin

+0

मैन्युअल रूप से लॉग इन किए बिना 'ऑफ़लाइन_एसीसी' टोकन कैसे उत्पन्न किया जा सकता है? – Andrew

0
साथ

पीएचपी एसडीके 2.0 (मुझे लगता है), मैं बस की तरह

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

इसका इस्तेमाल इस के लिए नए एक साथ काम करना चाहिए के रूप में यह बजाय ourself द्वारा सत्र की स्थापना एक साफ दृष्टिकोण का अधिक प्रतीत हो रहा है । क्या आप इसे आजमा सकते है?

0

क्वांटिन का जवाब बहुत अच्छा है लेकिन अधूरा, मुझे लगता है। यह अच्छा काम करता है, लेकिन उदाहरण के लिए getUser() उस समय काम नहीं कर रहा है क्योंकि userId (जो getUser() लौटने वाला है) कैश किया गया है।

मैं सभी कैश साफ़ करें और यह लगातार बचाने के लिए एक नया तरीका बनाया है।

public function setPersistentAccessToken($access_token) { 
    $this->setAccessToken($access_token); 
    $this->user = $this->getUserFromAccessToken(); 
    $this->setPersistentData('user_id', $this->user); 
    $this->setPersistentData('access_token', $access_token); 
    return $this; 
}