6

रीफ्रेश होने तक प्रक्रिया निम्नानुसार है।कोडिग्निटर, फेसबुक जावास्क्रिप्ट एसडीके, PHP लॉगिन एसडीके रीडायरेक्ट फेसबुक लॉगिन के बाद प्राप्त नहीं होता है()

1. User clicks Facebook Login button 
2. User signs in and grants perms 
3. Facebook redirects uses FB.Event.subscribe auth.login to redirect my login controller 
4. My login controller loads the fbconnect module and chains the method Connect() 
5. Connect() Checks if there is a facebook user using getUser() and if true checks if they are an existing user to log them in or returns false if no facebook user was found. 

सब कुछ केवल एक समस्या को छोड़कर काम करता है लॉगिन पृष्ठ पर पुनः निर्देशित किए जाने के बाद है कनेक्ट झूठी देता है जब यह वास्तव में सच साइन fbuser में लॉग ऑन है और perms प्रदान कर दी है होना चाहिए। अगर मैं रीफ्रेश करता हूं हालांकि सबकुछ काम करता है, तो उपयोगकर्ता मौजूद है या साइन अप पेज पर नया भेजा जाता है। नीचे मेरी कोड ..

 <div id="fb-root"></div> 
    <script> 
     //initializing API 
     window.fbAsyncInit = function() { 
     FB.init({appId: '(My app id)', status: true, cookie: true, 
       xfbml: true, // channel.html file 
       oauth : true 
       }); 
       FB.Event.subscribe('auth.login', function(response) { 
       window.location='http://www.(Mysite).com/login'; 
       }); 
       FB.Event.subscribe('auth.logout', function(response) { 
       window.location='http://www.(Mysite).com/logout'; 
       }); 
       }; 
     (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
     }()); 
    </script> 

Fbconnect.php

class Fbconnect extends MX_Controller { 
public $fb_user = null; 
public $fb_user_id = null; 

// Initilize Fabebook 
public function __construct() 
{ 
    parent::__construct(); 
    $this->config->load("facebook"); 
    require 'facebook.php'; 

    $this->facebook = new Facebook(array(
     'appId' => $this->config->item('appId'), 
     'secret' => $this->config->item('Secret') 
    )); 


    // Get user from FB 
    $this->fb_user_id = $this->facebook->getUser(); 

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

} 


public function connect(){ 

    // Check for FB object 
    if($this->fb_user): 
     // FB Object found 
      // Check if user exists 
      $this->load->model('facebook/m_facebook'); 
      $user = $this->m_facebook->getUser($this->fb_user->id); 

      // If we find a user and fb connect is true 
      if($user): 
       // user found log them in 
       if($this->ion_auth->login($user->username, $user->password, true, true)): 
        redirect('', 'refresh'); 
       endif; 
      else: 
      // There is a fb object & the user is not logged in & doesnt exist in db yet must be new 
       redirect('signup/facebook', 'refresh'); 
      endif; 
    else: 
     // No FB user or user not logged in         
     return false; 
    endif;  
} 

प्रमाणन/लॉगिन कोड (बस बात यह है कि फेसबुक शामिल है)

$this->load->module('facebook/fbconnect')->connect(); 

किसी भी इनपुट के लिए अग्रिम रूप से धन्यवाद है इस विषय पर।

+0

आप किस ब्राउज़र का उपयोग कर रहे हैं? एफबी उन मुद्दों को ठीक कर रहा है जहां पहली बार एसडीके से कुकी को पुनर्प्राप्त नहीं किया जाता है (आपको इसे काम करने के लिए ताज़ा करना होगा)। – ifaour

उत्तर

6

वैसे मुझे लगता है कि यह पता चला है। मैं जावास्क्रिप्ट लिए यह परिवर्तन किया:

FB.Event.subscribe('auth.login', function(response) { 
    FB.api('/me', function(response) { 
    window.location.reload(); 
    }); 
}); 

मुझे लगता है कि FB.api जोड़कर ('मुझे /', समारोह (प्रतिक्रिया) {}); यह किसी भी तरह getUser() वापस सच कर दिया। अगर किसी और को मिल रहा है उपयोगकर्ता() वापसी 0 इसे आजमाएं। वैसे भी मुझे आशा है कि यह दूसरों की मदद करेगा :)

+0

मेरे पास बिल्कुल वही समस्या है लेकिन मैं केवल PHP एसडीके का उपयोग करता हूं। उस मामले में इस समस्या को हल करने के बारे में कोई सुझाव? – eskimo

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