在linux服务器上使用curl获取facebook的访问令牌

时间:2011-10-05 13:27:29

标签: php curl facebook-graph-api libcurl

我在尝试使用cURL从我的Linux服务器上的Facebook获取访问令牌时遇到问题。在我的Windows机器上,当我在XAMPP下运行PHP时,一切正常,但在Linux中却没有。

我已在我的Linux服务器上安装了cURL,现在正尝试使用它,但它不会返回任何信息。

我的代码如下:

$url = "https://graph.facebook.com/oauth/access_token?client_id=278313225526998&redirect_uri=thejunction.africanbank.net/baobab/baobab.php&client_secret=$app_secret&code=$code";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: graph.facebook.com'));
$access_token = curl_exec($ch);
curl_close($ch); 
echo "access is: ".$access_token;

有人可以让我知道我在这里做错了什么吗?它给了我错误:

An error occured while fetching the URI

我也尝试过使用

  $url = 'http://www.stackoverflow.com';
     //curl script to get content of given url
  $ch = curl_init();
     // set the target url
  curl_setopt($ch, CURLOPT_URL,$url);
  // request as if Firefox
  curl_setopt($ch, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U;   Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") ); 
  curl_setopt($ch, CURLOPT_NOBODY, false);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result= curl_exec ($ch); 
  curl_close ($ch);
  echo "result is".$result;

它给了我一个错误

An error occured while fetching the URI. Please retry.

在我的php.ini文件中启用了curl,请看图片 enter image description here

男人们可能会遇到什么问题?请帮帮我。

由于 唐纳德

1 个答案:

答案 0 :(得分:2)

你的redirect_uri错了。它应该是

  1. 编码
  2. with http(s)
  3. 所以改变

    $url = "https://graph.facebook.com/oauth/access_token?client_id=278313225526998&redirect_uri=thejunction.africanbank.net/baobab/baobab.php&client_secret=$app_secret&code=$code";
    

    $url = "https://graph.facebook.com/oauth/access_token?client_id=278313225526998&redirect_uri=".urlencode("http://thejunction.africanbank.net/baobab/baobab.php")."&client_secret=$app_secret&code=$code";