【问题标题】:How to generate Facebook User Access Token using curl如何使用 curl 生成 Facebook 用户访问令牌
【发布时间】:2015-04-09 06:45:24
【问题描述】:

我正在做一个需要导入 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 获取页面访问令牌。

【问题讨论】:

    标签: php facebook-graph-api curl


    【解决方案1】:

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

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

    【讨论】:

    • 如果我提供 APP_KEY 和 APP_SECRET 之类的应用凭据来获取 access_token,那么该访问令牌将被称为 app_access_token 对吗?如果我提供应用凭据,它将如何变为 user_access_token?是什么让它成为 user_access_token ?
    • 是的。在 api explorer 中选择您的应用程序,然后单击“获取访问令牌”以获取用户令牌。您需要为此授权应用程序。
    • 好的,我知道了。但是有没有办法我可以使用 CURL 以编程方式获取 user_access_token ?我不应该使用 Facebook-php-sdk 或任何其他库
    • 好的,我是从您提供的上述链接中获得的。通过打电话给我/帐户对吗?现在,我需要使用这个 user_access_token 来获取 page_access_token 吗?如果是,如何?
    • 您需要知道的一切都在我的答案中的链接和 facebook 文档中得到了很好的解释。你需要花时间阅读;)
    【解决方案2】:

    错误的问题,不需要令牌

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

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

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

    你想做的,一点都不难。

    只需在浏览器中转到那里,然后将 cookie 键值复制到 Cookie: HTTP 请求标头中。我的被​​淘汰了。

    <?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');
    

    【讨论】:

    • 我需要 page_access_token 将任何内容作为页面(不是用户)发布到 Facebook 页面。要获得 page_access_token,我需要 user_Access_token。 [developers.facebook.com/docs/facebook-login/access-tokens]
    • 要发帖,您可以登录,然后发帖。对吗?如果是这样,用 curl 很容易做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多