如果您已经拥有有效的身份验证令牌,如何绕过facebook PHP登录方法

如果您已经拥有有效的身份验证令牌,如何绕过facebook PHP登录方法,php,codeigniter,facebook-graph-api,facebook-php-sdk,access-token,Php,Codeigniter,Facebook Graph Api,Facebook Php Sdk,Access Token,我在codeigniter项目中使用此库访问Facebook graph API: 我的web应用程序使用Facebook JS SDK在客户端对用户进行身份验证,然后在登录完成后,立即通过AJAX请求将用户的用户id和会话对象发送到我的服务器。我想从服务器调用graph API来接收用户的基本信息,因此我想知道是否有一种方法可以绕过调用facebook->login()方法来通过facebook重定向接收会话的需要?有人知道怎么做吗?我根本不推荐Facebook SDK。如果你自己做事情,你

我在codeigniter项目中使用此库访问Facebook graph API:


我的web应用程序使用Facebook JS SDK在客户端对用户进行身份验证,然后在登录完成后,立即通过AJAX请求将用户的用户id和会话对象发送到我的服务器。我想从服务器调用graph API来接收用户的基本信息,因此我想知道是否有一种方法可以绕过调用facebook->login()方法来通过facebook重定向接收会话的需要?有人知道怎么做吗?

我根本不推荐Facebook SDK。如果你自己做事情,你会有更多的控制权,这会变得简单得多。只需设置一个旋度函数,如:

function curl($url, $request = 'GET'){
    $ch = curl_init();
    $curlopt = array(
        CURLOPT_URL => $url,
        CURLOPT_CUSTOMREQUEST => $request,
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 60,
        CURLOPT_USERAGENT      => 'facebook-php-2.0',
    );
    curl_setopt_array($ch, $curlopt);
    $response = curl_exec($ch);
    if($response === false)
        trigger_error(curl_error($ch));
    curl_close($ch);
    return $response;
}
function fb_api($url, $access_token = false, $request = 'GET'){
    $url = 'https://graph.facebook.com/'.$url;
    if($access_token)
        $url .= (strstr($url, '?') ? '&' : '?').'access_token='.$access_token;
    return json_decode(curl($url, $request), true);
}
然后是Facebook api函数,如:

function curl($url, $request = 'GET'){
    $ch = curl_init();
    $curlopt = array(
        CURLOPT_URL => $url,
        CURLOPT_CUSTOMREQUEST => $request,
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 60,
        CURLOPT_USERAGENT      => 'facebook-php-2.0',
    );
    curl_setopt_array($ch, $curlopt);
    $response = curl_exec($ch);
    if($response === false)
        trigger_error(curl_error($ch));
    curl_close($ch);
    return $response;
}
function fb_api($url, $access_token = false, $request = 'GET'){
    $url = 'https://graph.facebook.com/'.$url;
    if($access_token)
        $url .= (strstr($url, '?') ? '&' : '?').'access_token='.$access_token;
    return json_decode(curl($url, $request), true);
}
然后,您可以向graph api发出如下请求:


fb_-api('me',$access_-token)

如果,因为某种原因,你没有安装curl,你总是可以使用我的代理库:

嗯,我得说我真的很喜欢这个建议。这似乎比使用繁重的facebook sdk来快速请求数据要容易得多。谢谢@PaulPRO@凯西·弗林:不客气:)自从sdk升级到graph api后,我就没用过它。我发现它有点臃肿,因为它没有被Facebook开发者文档覆盖,所以使用起来有点困难。