CodeIgniter - I miei dati di sessione personalizzati sono stati rimossi da Facebook?

StackOverflow https://stackoverflow.com/questions/1610231

  •  05-07-2019
  •  | 
  •  

Domanda

Mi chiedo se c'è un modo per scaricare tutti i valori di

$this->session->userdata() 

così posso risolvere i problemi?

Sto lavorando su Facebook e ho una pagina di accesso e, una volta avvenuto con successo, voglio passare l'UID dell'utente corrente e ho pensato che avrebbe funzionato bene.

Attualmente ho impostato l'UID come segue:

require_once 'facebook.php';
$appapikey = 'XXXX';
$appsecret = 'XXXX';
$facebook = new Facebook($appapikey, $appsecret);
$user_id = $facebook->require_login();
$this->db->like('uid', $user_id);
$this->db->from('users');
$has_signed_up = $this->db->count_all_results();

if ($has_signed_up == 0) {
redirect('/setup/signup/', 'location');
}
else {
$this->session->set_userdata('uid', $user_id);
redirect('/preferences/index/', 'location');
}

Quindi si verifica il reindirizzamento e ho una configurazione molto semplice su preferenze / indice:

    echo "this is the preferences form <br />";
    echo $this->session->userdata('uid');
    echo $this->session->userdata('session_id');

E il risultato è imperscrutabile:

this is the preferences form
858f500e167e359edc1942a96f3bac35

Quindi salta totalmente l'eco centrale contenente l'UID. Non lo sto impostando correttamente? C'è un modo per scaricare tutti i valori dell'array di sessione per vedere cosa sta passando? Qualsiasi aiuto sarebbe semplicemente fantastico.

Aggiorna

Ho eseguito var_dump ($ this- > session- > userdata) su ciascun sito Web non elaborato e tramite Facebook.

Sul sito Web espone tutti i valori impostati in un array contenente 5 valori (session_id, IP, User_agent, last_activity e uid).

All'interno di Facebook Chrome, tuttavia, mostra solo i 4 valori impostati da CodeIgniter. Ho sentito che i cookie possono essere solo 4K e che la crittografia potrebbe essere un problema. FB potrebbe riempire i cookie con i propri dati crittografati (leggi: più grandi)?

AGGIORNAMENTO 2

Quando commento il reindirizzamento e ho solo:

  else {
  $this->session->set_userdata('uid', $user_id);
  echo ':test_'.$this->session->userdata('uid').'_test:';
  //redirect('/preferences/index/', 'location');
  }

Restituisce doverosamente: test_1234_test: all'interno di Facebook. Quindi da qualche parte durante il reindirizzamento sta perdendo questa parte dell'array (ma non l'intero array).

Forse sta semplicemente creando una nuova sessione nella pagina di reindirizzamento? Ecco perché ha solo i quattro "stock" variabili? Se questo è il caso, dovrò cercare come crea le sessioni, e se Facebook cancella i cookie suppongo.

AGGIORNAMENTO 3

Quindi ho deciso di utilizzare un DB per archiviare le informazioni sulla sessione anziché i cookie, pensando che FB li stesse spogliando o scontrandosi con loro. Al momento l'app è impostata su

  1. Imposta $ user_id = 1234
  2. $ this- > session- > set_userdata ('uid', $ user_id)
  3. Reindirizza alla nuova pagina
  4. Var_dump tutte le informazioni possibili

Ciò che accade nel DB è questo: Record DB http://nikolausjj.facebook.joyent.us/Picture2.png

Quindi crea un buon record, con i dati dell'utente, quindi immediatamente al reindirizzamento crea una nuova sessione senza riconoscere quella precedente. Qualcuno può spiegare dove controlla il framework CI per vedere se esiste una sessione precedente? Il manuale dell'utente lo spiega come "magico". in fondo.

È stato utile?

Soluzione

Puoi usare var_dump () per generare la sessione. Qualcosa del genere

var_dump($this->session);

La chiamata set_userdata sembra a posto. Sei sicuro che $ user_id sia impostato. Perché l'eco è surley eseguito ma uid non è impostato o impostato su stringa vuota.

Prova a sostituire l'eco con

echo ':test_'.$this->session->userdata('uid').'_test:';

Altre informazioni utili per rispondere

  • Quale browser stai utilizzando?
  • Hai un carattere di sottolineatura _ nel tuo nome di dominio?
  • Stai utilizzando sessioni CI o un wrapper per sessioni PHP native
  • Anche il valore per uid è perso / non impostato quando si commenta il reindirizzamento?

Altri suggerimenti:

  • prova reindirizzamento ('/ preferenze / index /', 'refresh'); invece di location
  • Non ho familiarità con lo sviluppo di Facebook ma / preferenze / index è sotto il tuo controllo? Se sì, prova a rimuovere (se presente) $ this- > load- > library ("session") e invece caricalo in autoload.php .
  • prova a cambiare $ config ["sess_match_ip"] in "FALSE
  • prova a impostare $ config ["sess_encrypt_cookie"] su FALSE
  • prova a sostituire l'uso di CI-Session con Sessione nativa CI
  • Le informazioni UID sono sensibili se non memorizzate in un cookie. Se importa se può essere falsificato, non farlo.

Altri suggerimenti

Non ho risolto il modo di passare le variabili di sessione da una pagina all'altra tramite Facebook. La mia soluzione era semplicemente quella di chiamare nuovamente l'API di Facebook per l'UID dell'utente su ogni pagina. Non eccezionale programmazione, ma funziona bene per me. : - /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top