对facebook的curl请求将我重定向到https://facebook.com/common/invalid_request.php

时间:2015-12-31 01:52:20

标签: php facebook curl cookies

这是我在2015年初所做的课程功能代码的一部分。今天它已不再有效。在我的代码中定义的变量,所以这不是问题......

现在我们已经明确了,让我们明白:

问题:

  1. 不生成cookie
  2. 在登录页面中,我得到一个带有"的红色标志。 安全政策" ...
  3. 我被重定向到 我记录时https://facebook.com/common/invalid_request.php 下面我解释一下我记录的日子)
  4. 解决方案很差:

    1. 要生成Cookie,您所做的只是使用Chrome的扩展程序,向您显示以Netscape格式称为Cookie的cookies.txt,并使用Facebook复制该文件并登录,因为我不允许使用不使用Log的Cookie登录。< / LI>
    2. 我无法解决它

          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, 'https://www.facebook.com/');
          curl_setopt($ch, CURLOPT_POST, 0);
          curl_setopt($ch, CURLOPT_HEADER, 0);
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
          curl_setopt($ch, CURLOPT_COOKIEJAR, $this->CONFIG['cookie']);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch, CURLOPT_USERAGENT, $this->CONFIG['useragent']);
          curl_setopt($ch, CURLOPT_REFERER, 'http://www.facebook.com');
          curl_exec($ch) or die(curl_error($ch));
          curl_close($ch);
          unset($ch);
      
      
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, 'https://www.facebook.com/login.php');
          curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($email).'&pass='.urlencode($pass).'&login=Login');
          curl_setopt($ch, CURLOPT_POST, 1);
          curl_setopt($ch, CURLOPT_HEADER, 0);
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
          curl_setopt($ch, CURLOPT_COOKIEJAR, $this->CONFIG['cookie']);
          curl_setopt($ch, CURLOPT_COOKIEFILE, $this->CONFIG['cookie']);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch, CURLOPT_USERAGENT, $this->CONFIG['useragent']);
          curl_setopt($ch, CURLOPT_REFERER, 'http://www.facebook.com');
          $page = curl_exec($ch) or die(curl_error($ch));
          file_put_contents(getcwd().'/debug.html', $page);
          preg_match('/<body class="([^<]+)" dir="ltr">/', $page, $web);
          if(file_exists($this->CONFIG['token'])) unlink($this->CONFIG['token']);
      
          if(preg_match('/home/i', $web[1])) {
              $this->login = true;
              return true;
          } else {
              return false;
          }
          curl_close($ch);
      

1 个答案:

答案 0 :(得分:1)

您无法使用CURL登录,您需要实施正确的登录过程,而且您永远不需要密码:https://developers.facebook.com/docs/facebook-login

我建议使用JavaScript SDK,这很容易处理。以下是一些可以帮助您入门的链接: