[PHP][Facebook API] session wordt niet vast gehouden

Pagina: 1
Acties:

Onderwerpen


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
Ik gebruik facebook.php van de PHP SDK. Ik maak een Facebook instantie aan met de volgende code, waarbij USE_COOKIE op true staat:

PHP:
1
2
3
4
5
6
7
$facebook = new Facebook(array(
  'appId'  => APPLICATION_ID,
  'secret' => SECRET,
  'cookie' => USE_COOKIE,
  'req_perms' => REQUESTED_PERMISSIONS,
  'domain' => DOMAIN
));


Vervolgens check ik verderop of er een action is gezet, waarbij ik naar authorize ga als dat niet zo is. Dat werkt goed, hij vraagt netjes om de authorisatie die ik vraag.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    if (!isset($_GET['action'])) {
        $applicationUrl = "http://" . $_SERVER["HTTP_HOST"] . "/?action=index";
        $authenticationUrl = "https://graph.facebook.com/oauth/authorize?client_id=" . APPLICATION_ID . "&redirect_uri=" . $applicationUrl . "&scope=user_photos";
        header("Location: " . $authenticationUrl);
        exit;        
    } else {
        if ($facebook->getSession()) {
            echo '<a href="' . $facebook->getLogoutUrl() . '">Logout</a>';
            include('app.php');
        } else {
            echo '<a href="' . $facebook->getLoginUrl() . '">Login</a>';
        }
    }


Als er wel een action is, dan gaat hij kijken of er een session is. Is dat niet zo, zie ik een login button.
Als ik daar vervolgens op klik, dan log ik netjes in en laat hij bijvoorbeeld de action index zien. Klik ik binnen die index weer ergens anders op, heeft hij opeens geen session meer, dus moet ik weer op login klikken, waarna hij weer inlogt en vervolgens krijg ik de volgende stap weer wel te zien.

Kortom, hij lijkt mijn session maar één stap te onthouden. Aangezien er geen complete werkende demo op internet staat, weet ik niet of er een fout in mijn code staat, of dat er wellicht ergens een parametertje verkeerd staat ingesteld. Wie heeft een idee?

iOS developer


  • HuHu
  • Registratie: Maart 2005
  • Niet online
Waar staat je session_start()?

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
Bovenaan, net onder error_reporting(E_ALL);

iOS developer


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Dan moet je gaan debuggen. Ga eens op elke pagina je sessionid en session content afdrukken, kijk of dat veranderd. Zo ja, heb je waarschijnlijk een verkeerde session lifetime of cookie domain.

Anyone who gets in between me and my morning coffee should be insecure.


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50
Hmm het semi recht geprutst met de volgende code{

PHP:
1
2
3
4
5
6
7
8
    if (isset($_GET['session'])) {
        $session_value = json_encode($_GET['session']);
        $session_value=trim($session_value,'"');
        $session_value=stripslashes($session_value);
        $session_parameter='&session='.urlencode($session_value);
    } else {
        $session_parameter='';
    }


Waarbij ik $session_parameter achter iedere link knal in mijn applicatie. Het voelt wel een beetje vies :$

----

Ik ga er eens mee aan de gang MueR

[ Voor 4% gewijzigd door BikkelZ op 29-09-2010 10:49 ]

iOS developer


  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik heb alleen maar dit nodig en dan werkt alles direct:

PHP:
1
2
3
4
5
6
7
8
9
10
11
if($this->_facebook->getSession()) {
    // doe je ding
}
else {
    $options = array();
    $options['req_perms'] = 'publish_stream,email';
    $options['next'] = 'http://www.jouwdomein.nl/pad/naar/pagina';
    $options['cancel_url'] = $options['next'];
    header('Location: ' . $this->_facebook->getLoginUrl($options));
    exit;
}


De session_start(); staat in m/'n bootstrap en de cookie op true in de construct van Facebook.
Pagina: 1