Приложение Facebook для добавления вкладки на страницу OAuth в Codeigniter - PullRequest
0 голосов
/ 25 декабря 2011

Я создаю приложение на Facebook для добавления вкладки на мою страницу в Facebook. Я использую Codeigniter Framework для этого. Мне нужен доступ к некоторой пользовательской информации - электронной почте, образованию и т. Д. На определенной странице моего приложения. Итак, мне нужно пройти аутентификацию только на этой странице и получить маркер доступа. В моей попытке сделать это я могу аутентифицировать пользователя, но не могу получить код, отправленный Facebook oauth, который мне нужен, чтобы получить токен доступа. Я думаю, что это связано с тем, что Codeigniter изменяет массив get. Я попробовал несколько способов заставить массив работать, но я все еще не мог получить содержимое кода.

Не могли бы вы дать мне простой способ получить токен для пользователя в моем приложении. Я пытался много искать, но ничего не получалось.

Пока это код, который я написал:

$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 голосов
/ 25 декабря 2011

Вы можете отключить санацию GET, но вы, вероятно, этого не хотите.

В качестве быстрого и грязного решения вы можете сделать что-то вроде этого:

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