2010-08-06 2 views
0

Je me suis connecté avec succès à facebook de cette manière, mais ne peut pas sembler garder le facebook connecté dès que vous cliquez sur quelque chose dans facebook il vous redirige vers la page de connexion. J'ai réfléchi à cela + pensé que c'était parce que curl utilisait le cookie + pas le navigateur, donc lorsque vous cliquez sur vous n'êtes pas authentifié.J'ai essayé de me connecter à Facebook via curl,

Y a-t-il un moyen de définir le fichier cookie que la boucle a exporté dans le navigateur?

J'espérais que je pourrais simplement ouvrir le fichier php + ce serait pelotonner me connecter + puis me rediriger vers ma page facebook, merci pour l'aide est le code ici:

<?php 
    // script name: login_to_facebook.php 
    // coder: Sony AK Knowledge Center - www.sony-ak.com 

    // your facebook credentials 
    $username = "xxxxx"; 
    $password = "xxxxx"; 

    // access to facebook home page (to get the cookies) 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, "http://www.facebook.com"); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_ENCODING, ""); 
    curl_setopt($curl, CURLOPT_COOKIEJAR, getcwd() . '/cookies_facebook.cookie'); 
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"); 
    $curlData = curl_exec($curl); 
    curl_close($curl); 

    // do get some parameters for login to facebook 
    $charsetTest = substr($curlData, strpos($curlData, "name=\"charset_test\"")); 
    $charsetTest = substr($charsetTest, strpos($charsetTest, "value=") + 7); 
    $charsetTest = substr($charsetTest, 0, strpos($charsetTest, "\"")); 

    $locale = substr($curlData, strpos($curlData, "name=\"locale\"")); 
    $locale = substr($locale, strpos($locale, "value=") + 7); 
    $locale = substr($locale, 0, strpos($locale, "\"")); 

    $lsd = substr($curlData, strpos($curlData, "name=\"locale\"")); 
    $lsd = substr($lsd, strpos($lsd, "value=") + 7); 
    $lsd = substr($lsd, 0, strpos($lsd, "\"")); 

    // do login to facebook 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, "https://login.facebook.com/login.php?login_attempt=1"); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_POST, 1); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, "charset_test=" . $charsetTest . "&locale=" . $locale . "&non_com_login=&email=" . $username . "&pass=" . $password . "&charset_test=" . $charsetTest . "&lsd=" . $lsd); 
    curl_setopt($curl, CURLOPT_ENCODING, ""); 
    curl_setopt($curl, CURLOPT_COOKIEFILE, getcwd() . '/cookies_facebook.cookie'); 
    curl_setopt($curl, CURLOPT_COOKIEJAR, getcwd() . '/cookies_facebook.cookie'); 
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"); 
    $curlData = curl_exec($curl); 
    curl_close($curl); 

    echo $curlData; 
?> 

Répondre

1

Vous parlez à propos de la définition d'un cookie pour un domaine que vous ne contrôlez pas, ce qui n'est tout simplement pas possible.

+0

sur ce post: http://stackoverflow.com/questions/1121280/how-to-let-curl-use-same-cookie-as-the-browser-from-php Daff dit qui est envoyé dans l'en-tête de la requête HTTP, Je pensais qu'en engendrant le cookies_facebook.cookie + en le plaçant dans une chaîne + puis en le plaçant dans ce format .. Cela pourrait fonctionner? –

+0

http://stackoverflow.com/questions/1895955/gmail-facebook-without-username-password-php-login-header-problem cela me soutient dans le cas où la boucle correctement faite pourrait fonctionner? –

+0

Peter a raison. Le deuxième lien que vous avez fourni ne peut jamais fonctionner. Cela implique de violer les politiques de sécurité. La réponse du premier lien estime que la tâche est impossible. – mattbasta

Questions connexes