2010-07-14 16 views
17

मैं नए ग्राफ एपीआई के मेरे पुराने अमेरिकन प्लान एप्लिकेशन पलायन कर रहा हूँ PHP APIकैसे जाँच करने के लिए उपयोगकर्ता नए फेसबुक php एपीआई

का उपयोग कर से प्रवेश करने वाले मैं दो पृष्ठों है यदि: सार्वजनिक (जो कोई भी उपयोगकर्ता लॉगिन की आवश्यकता होती है) और निजी लोगों को (जो करते हैं)

तो अपने आवेदन में हर php पृष्ठ के कोड इस प्रकार काम करता है:

if (this_page_requires_user_login){ 
     $facebook = new Facebook(...) ; 
     $session = $facebook->getSession ; 
     if (!$session){ 
       $url =$facebook.getLoginUrl(array(next => current_page); 
       echo "<fb:redirect url=$url/>" ; 

} 
// the rest of the code continues here 

अब के रूप में आप देख सकते हैं, लॉगिन यूआरएल को आगे हर पृष्ठ काम करने का इस तरह से और यह काम करता है, यह भी धीमा है औरजोड़ता हैसत्र = {bla} स्ट्रिंग बहुत एकल यूआरएल के लिए।

मुझे यह जांचने का एक तरीका चाहिए कि उपयोगकर्ता लॉग इन पेज पर रीडायरेक्ट करने से पहले उपयोगकर्ता पहले से लॉग इन हो। लेकिन मुझे php api में ऐसी विधि नहीं मिल रही है। ऐसा करने का सबसे अच्छा तरीका क्या है?

संपादित

यह मैं अपना कोड सही पढ़ रहा हूँ, सिर्फ तभी जब कोई सत्र दिया जाता है तो आप रीडायरेक्ट कर रहे हैं तो चाल

if ($session) { 
    try { 
    $me = $facebook->api('/me'); 
    if ($me) { 
     // here comes your code for user who is logged in 
    } 
    } catch (FacebookApiException $e) { 
    login() 
    } 
}else{ 
login() 
} 

function login(){ 

    $url =$facebook.getLoginUrl(array(next => current_page); 


     echo "<fb:redirect url=$url/>" ; 
} 

उत्तर

19

करने के लिए लग रहा था? Facebook's example में टिप्पणियों के मुताबिक, यदि आप सत्र वापस लेते हैं, तो भी आप यह मान नहीं सकते कि यह अभी भी मान्य है। केवल एक एपीआई कॉल की कोशिश कर रहा है जिसके लिए लॉग इन उपयोगकर्ता की आवश्यकता है, आप निश्चित रूप से जान लेंगे। लॉगिन/लॉगआउट स्थिति को विश्वसनीय रूप से निर्धारित करने के लिए मैंने यह सबसे अच्छा तरीका देखा है।

if ($session) { 
    try { 
    $me = $facebook->api('/me'); 
    if ($me) { 
     //User is logged in 
    } 
    } catch (FacebookApiException $e) { 
    //User is not logged in 
    } 
} 
+3

आप टोकन पहुँच संग्रहीत किया है और यह प्रयोग कर रहे हैं, यह काम नहीं करता है, क्योंकि API कॉल अभी भी एक अपवाद फेंकने के बिना काम करता है, लेकिन फिर जब आप उदाहरण के लिए getLogoutUrl करने के लिए उन्हें अनुप्रेषित, यह सिर्फ भेजता है उन्हें फेसबुक की होमपेज पर, आपको अपनी वेबसाइट – andrewtweber

+0

@andrewtweber पर वापस भेजने की बजाय। धन्यवाद। –

+0

आपको पहले यूआरएल डीकोड करना था, यही कारण है कि आपने रीडायरेक्ट नहीं किया:

संबंधित मुद्दे