Проблема API Facebook Connect с токеном аутентификации - PullRequest
0 голосов
/ 02 августа 2010

Я реализовал следующий код ниже в соответствии с документацией и могу заставить его подключиться и отобразить идентификатор пользователя ...

<?php

define('FACEBOOK_APP_ID', '87939462878');
define('FACEBOOK_SECRET', '1ab6346bc51329831998985aba200935');

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);

?>

<?php if ($cookie) { ?>
      Your user ID is <?= $cookie['uid'] ?>
    <?php } else { ?>
      <fb:login-button show-faces="true" perms="email,user_birthday,user_location"></fb:login-button>
    <?php } ?>


<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
      FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
               cookie: true, xfbml: true});
      FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
      });
    </script>

<?php
$user = json_decode(file_get_contents(
    'https://graph.facebook.com/me?access_token=' .
    $cookie['access_token']))->id;
print_r($user);
?>

Однако, если я использую:

$user = json_decode(file_get_contents(
    'https://graph.facebook.com/me?wrap_access_token=' .
    $cookie['oauth_access_token']))->me; //or $cookie['access_token']))->me;
register_user($user->id, $user->email, $user->name, $user->username,
              $user->birthday_date);

чтобы получить адрес электронной почты, я постоянно получаю ошибки file_get_content. Я также получаю сообщения о том, что он не распознает функцию register_user. Я чувствую, что я близко! Пожалуйста, помогите, если это возможно, спасибо!

1 Ответ

0 голосов
/ 04 августа 2010

Я не знаком с используемой вами библиотекой, в которой есть register_user, но есть ли причина, по которой вы не используете PHP SDK для подключения к Facebook? Вы можете скачать его по адресу http://github.com/facebook/php-sdk, и в нем есть примеры как получения токена аутентификации с расширенными разрешениями, так и извлечения всей пользовательской информации, которая вам нужна.

...