2010-10-23 64 views
1

我想在PHP脚本(id和名称)中获取有关用户的一些基本信息。图形API:如何抓取当前用户的信息?

我曾尝试以下方法:

$retrieve = curl_init("https://graph.facebook.com/me?access_token=$accesstoken"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($retrieve, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$data = curl_exec($retrieve); 
curl_close($retrieve); 

$user = json_decode(file_get_contents(
     "https://graph.facebook.com/me?access_token=$accesstoken"))->me; 

卷曲方法(前)只是超时。 file_get_contents(后者)方法根本不返回任何东西...

什么可能导致这种情况?我正确使用cURL吗?

+0

你检查一下file_get_contents()函数返回的信息没有json_decode()调用和 - > me操作符? – 2010-10-23 23:10:40

+0

为什么不使用Facebook PHP SDK来做到这一点? http://github.com/facebook/php-sdk – 2010-10-23 23:10:49

+0

@Eran:是的,它根本没有任何回报。这完全是空的。 @Nathan:我现在没有使用SDK,我需要先手动执行此操作。我不明白为什么这不起作用... – 2010-10-23 23:18:11

回答

-1

Facebook不会让你使用卷曲。他们有这个api。

复制你的链接并粘贴到浏览器。它会工作。在Mozilla中,您将在浏览器中看到结果,IE会将结果保存为文件。所以它不是关于无效的访问令牌等。这仅仅是因为Facebook不响应您的查询,当它不从来自Facebook的API的Web浏览器2发出时。

这里是对Facebook的相关PHP调用。

$attachment = array('access_token' => $access_token); 
$result=$facebook->api('/me', 'GET', $attachment); 
$id = $result['id']; 
$name=$result['name']; 
+0

好运,试图了解Facebook如何使用curl那里。他们有一千种不同的机制。 – cuneyt 2011-01-30 18:11:44

1

的图形API,你可以使用图形API方法rahter比卷曲 下面的代码抓住当前用户

 
define('FACEBOOK_APP_ID', 'Your API ID'); 
define('FACEBOOK_SECRET', 'YOUR SECRET'); 
function get_facebook_cookie($app_id, $application_secret) 
{ 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value) 
    { 
     if ($key != 'sig') 
     { 
      $payload .= $key . '=' . $value; 
     } 
    } 
    if (md5($payload . $application_secret) != $args['sig']) 
    { 
     return null; 
    } 
    return $args; 
} 
$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET); 
$user=json_decode(file_get_contents('https://graph.facebook.com/me?access_token='.$cookie['access_token'])); 

其prettey容易