如何使用curl生成Facebook用户访问令牌

时间:2015-04-09 06:45:25

标签: php facebook-graph-api curl

我正在做一个我需要导入Facebook页面供稿的项目。要访问Facebook页面供稿,我需要一个page_access_token并生成page_access_token我需要用户访问令牌。

我的问题是

1.如何使用CURL生成此User_access_token?大部分解决方案都需要APP_KEY& APP_SECRET。在没有任何APP的情况下是否无法获得user_access_token?

  1. 一旦我获得User_access_token,我如何使用它来使用CURL获取页面访问令牌。

2 个答案:

答案 0 :(得分:3)

如果没有应用程序,您将无法获得任何令牌,但您无需编程任何内容即可获得用户令牌。这些文章详细解释了所有内容:

例如,您可以使用API Explorer选择您的应用并生成用户令牌。

答案 1 :(得分:0)

错误的问题,不需要令牌

我刚刚尝试过,我花了不到5分钟,从来没有刮过FB。我将页面保存到我的服务器并使用我的URL显示页面,看起来就像我在FB上一样。

如果浏览器可以加载禁用JavaScript的页面,那么您也可以。

您必须使用https://m.facebook.com/,其移动网站上不需要JavaScript。

你想做什么,一点也不困难。

只需在浏览器中访问,然后将Cookie密钥值复制到Cookie: HTTP请求标头中。我的x出了。

<?php
$request = array();
$request[] = 'Host: m.facebook.com';
$request[] = 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:39.0) Gecko/20100101 Firefox/39.0';
$request[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$request[] = 'Accept-Language: en-US,en;q=0.5';
$request[] = 'Accept-Encoding: gzip, deflate';
$request[] = 'DNT: 1';
$request[] = 'Cookie: datr=x; fr=x; lu=x s=xx; csm=x; xs=xx; c_user=x; p=-2; act=x; presence=x; noscript=1';
$request[] = 'Connection: keep-alive';
$request[] = 'Pragma: no-cache';
$request[] = 'ache-Control: no-cache';
$url = 'https://m.facebook.com/';
 $ch = curl_init($url);

  curl_setopt($ch, CURLOPT_ENCODING,"");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLINFO_HEADER_OUT, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_FILETIME, true);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 100);
  curl_setopt($ch, CURLOPT_VERBOSE, true);
  curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  curl_setopt($ch, CURLOPT_TIMEOUT,100);
  curl_setopt($ch, CURLOPT_FAILONERROR,true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $request);

  $data = curl_exec($ch);
  if (curl_errno($ch)){
      $data .= 'Retreive Base Page Error: ' . curl_error($ch);
  }
  else {
    $skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE)); 
    $responseHeader = substr($data,0,$skip);
    $data= substr($data,$skip);
    $info = curl_getinfo($ch);
    $info = var_export($info,true);
   }
      while(true){  // get cookies from response header
        $s = strpos($head,'Set-Cookie: ',$e);
        if (!$s){break;}
        $s += 12;
        $e = strpos($head,';',$s);
        $cookie = substr($head,$s,$e-$s) ;
        $s = strpos($cookie,'=');
        $key = substr($cookie,0,$s);
        $value = substr($cookie,$s);
        $cookies[$key] = $value;

      }

     $cookie = '';  // format cookies for next request header
     $show = '';
     $head = '';
     $delim = '';
     foreach ($cookies as $k => $v){
       $cookie .= "$delim$k$v";
       $delim = '; ';
     }

  $fp = fopen("fb.html",'w');
  fwrite($fp,"$data\n$info\n$responseHeader");
  fclose($fp);

readfile('fb.html');