Facebook App用于在Codeigniter中添加选项卡以页面OAuth

时间:2011-12-25 17:13:38

标签: php codeigniter facebook-graph-api facebook facebook-oauth

我正在创建一个Facebook应用程序,用于在我的Facebook页面上添加选项卡。我正在使用Codeigniter Framework。我需要在我的应用的特定页面中访问一些用户信息 - 电子邮件,教育等。因此,我只需要在该页面中进行身份验证并获取访问令牌。在我尝试这样做时,我能够验证用户,但无法获取facebook oauth发送的代码,我需要获取访问令牌。我认为这是因为Codeigniter修改了get数组。我尝试了一些方法来使get数组工作,但我仍然无法获取代码内容。

您能否直接给我一个在我的应用中为用户获取oauth令牌的方法。我试图搜索很多,但没有任何效果。

到目前为止,这是我写的代码:

$canvas_page = $page_url;
$signed_request = $_REQUEST["signed_request"];
$code = $this->input->get('code');
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

$auth_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page)."&scope=email,user_work_history,user_education_history";
  if (empty($data["user_id"])) {
        echo("<script> top.location.href='" . $auth_url . "'</script>");
  } else {
        echo ("Welcome User: " . $data["user_id"])."<br/>";
        $token_url = "https://graph.facebook.com/oauth/access_token?". "client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page). "&client_secret=" . $app_secret . "&code=" . $code;
        $a = file_get_contents($graph_url);
        var_dump($a);
  }

请给我一个简单的方法来完成OAuth。我想花更多时间开发该应用,而不是试图找出OAuth。

1 个答案:

答案 0 :(得分:0)

您可以禁用GET的清理,但您可能不希望这样。

作为一种快速而肮脏的解决方案,您可以执行以下操作:

parse_str($_SERVER['QUERY_STRING'], $args); // $args now contain GET parameters