6

का उपयोग किया गया है, मैं फेसबुक php an js sdk का उपयोग कर रहा हूं।फेसबुक PHP/JS Sdk यह प्राधिकरण कोड त्रुटि

मैं js sdk के साथ फेसबुक में लॉगिन कर रहा हूं। लॉगिन पूरी तरह से काम करता है।

और मेरे पास PHP भाग है।

private $helper, $api_id, $app_secret, $session;   

.... 

FacebookSession::setDefaultApplication($this->api_id, $this->app_secret); 
$this->helper = new FacebookJavaScriptLoginHelper(); 


try { 
    $this->session = $this->helper->getSession(); 
} catch (FacebookRequestException $ex) { 
    log_message('error', 'Facebook e1 :' . $ex->getCode()); 
    log_message('error', 'Facebook e1 :' . $ex->getMessage()); 
} catch (\Exception $ex) { 
    log_message('error', 'Facebook e2 :' . $ex->getCode()); 
    log_message('error', 'Facebook e2 :' . $ex->getMessage()); 
} 

if ($this->session) { 
    $request = (new FacebookRequest($this->session, 'GET', '/me'))->execute(); 
    $user = $request->getGraphObject()->asArray(); 
    return $user; 
} else { 
    return false; 
} 

जब पृष्ठ सामान्य रूप से लोड होता है, तो मुझे बिना किसी समस्या के उपयोगकर्ता डेटा मिलता है।

लेकिन उदाहरण के लिए, यदि मैं पृष्ठ को रीफ्रेश करने के लिए कई बार f5 दबाता हूं, तो मुझे मिलता है और त्रुटि होती है कि "यह प्राधिकरण कोड उपयोग किया गया है।" या "यह प्राधिकरण कोड समाप्त हो गया है।" और उपयोगकर्ता डेटा खाली है।

आइडिया जेएस के साथ लॉगिन करना है, और PHP में उपयोग करने के लिए PHP का उपयोग करने के लिए फेसबुक में लॉग इन किया गया है या नहीं। https://github.com/facebook/facebook-php-sdk-v4

धन्यवाद:

मैं नवीनतम फेसबुक php SDK का उपयोग कर रहा हूँ।

+0

यह भी मेरे लिए क्या हो रहा है है बस। :/ – Chuy

+0

मेरे साथ भी हो रहा है :( – ilumin

उत्तर

3

इसे ठीक करने के कई तरीके हैं।

1) आपको प्रत्येक कॉल में कुकी में एक्सेस टोकन अपडेट करना होगा, एफबी स्वचालित रूप से ऐसा नहीं करता है। तो, सुनिश्चित करें कि आप FB.init को status: true परम के साथ कॉल करें।

FB.init({ 
     appId  : window.fbId, 
     cookie  : true, 
     status  : true, 
     version : 'v2.3' 
    }); 

इसके बाद, हर पृष्ठ को रीफ्रेश आप FB.getLoginStatus(); कोई बात नहीं कॉल करने के लिए अगर आप फेसबुक के लिए पहले से ही जुड़े हुए हैं है।

यह काम नहीं करता है अगर आपके एप्लिकेशन को कुछ AJAX कॉल करने की आवश्यकता है - बस जब आप AJAX करते हैं तो एक्सेस टोकन अपडेट नहीं होता है (जब तक कि आप प्रत्येक AJAX कॉल से पहले FB.getLoginStatus(); पर कॉल न करें - और यह ओवरकिल है)।

2) एफबी जेएस एसडीके के माध्यम से उपयोगकर्ता कनेक्ट होने के बाद सत्र में एक्सेस टोकन को स्टोर करना बेहतर हो सकता है। PHP कोड इस प्रकार दिखाई देंगे:

try { 
     $fbToken = isset($_SESSION['fbToken']) ? $_SESSION['fbToken'] : NULL; 
     if ($fbToken !== NULL) { 
      $session = new \Facebook\FacebookSession($fbToken); 
     } else { 
      $helper = new FacebookJavaScriptLoginHelper(); 
      $session = $helper->getSession(); 
     } 

    } catch(\Facebook\FacebookRequestException $ex) { 
     log_message('error', 'Facebook e1 :' . $ex->getCode()); 
     log_message('error', 'Facebook e1 :' . $ex->getMessage()); 
    } catch(\Exception $ex) { 
     log_message('error', 'Facebook e2 :' . $ex->getCode()); 
     log_message('error', 'Facebook e2 :' . $ex->getMessage()); 
    } 

    if ($session) { 
     $accessToken = $session->getAccessToken(); 
     $longLivedAccessToken = $accessToken->extend(); 
     $_SESSION['fbToken'] = $longLivedAccessToken; 
     $request = (new FacebookRequest($session, 'GET', '/me'))->execute(); 
     $user = $request->getGraphObject()->asArray(); 
     return $user; 
    } else { 
     return FALSE; 
    } 
} 

आशा मैं मदद की थी ... चीयर्स।

-1

अपना ब्राउज़र इतिहास हटाएं, कुकीज़ कारण आप का परीक्षण अपने पहले तो सत्र कुछ बुरा मान

+0

हम्म मैंने एक और खाता और अन्य ब्राउज़र सभी काम करने की कोशिश की –

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