Проблема с входом в Facebook (php sdk 3.1.1 + последняя версия js SDK) - PullRequest
0 голосов
/ 13 сентября 2011
  1. Я создал test.php
  2. Скопированный пример из здесь
  3. Изменен appId и secret
  4. Загружен test.phpна сервер
  5. Попытка входа в систему

И я получаю исключение "Активный токен доступа должен использоваться для запроса информации о текущем пользователе"

Пожалуйста, помогите мнекто-то с этим .. Уже 5 дней я ничего не могу с этим поделать.

Ответы [ 4 ]

2 голосов
/ 27 декабря 2011

Я сталкивался с одной и той же проблемой много раз.Попробуйте это:

public static $CURL_OPTS = array(
   CURLOPT_CONNECTTIMEOUT => 100,//-----increase this value
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_TIMEOUT        => 600,//-----increase this value
   CURLOPT_USERAGENT      => 'facebook-php-3.1',

 );
1 голос
/ 15 сентября 2011

Просто чтобы добавить к исходному вопросу, я просто скопировал код, отправленный normeus, изменил appID и secret на значения для своего приложения и получил следующее:

You are not Connected.
Fatal error: Uncaught OAuthException: Invalid OAuth access token signature. thrown in 
/path/to/my/server/app/address/base_facebook.php on line 1033

Конечно, на панели facebook в верхней части экрана показано, что у меня есть 1 непрочитанное сообщение, поскольку я на самом деле вошел в систему. Есть ли какие-то другие настройки, которые необходимо выполнить? Кажется, что есть много людей с этой проблемой, но также есть много людей, у которых ее нет без окончательного решения.

Дэррил

0 голосов
/ 17 сентября 2011

Я нашел решение.

Я добавил CURLOPT_SSL_VERIFYPEER => 0 в базовый класс Facebook.

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_USERAGENT      => 'facebook-php-3.1',
    CURLOPT_SSL_VERIFYPEER => 0
  );
0 голосов
/ 13 сентября 2011

Будет проще, если вы разместите код, поскольку это звучит как опечатка.Вы не вошли в Facebook, и ваша страница не просит вас войти, поэтому вы не получаете токен и получаете ошибку токена.Это работает:

<code><?php

// * Copyright 2011 Facebook, Inc.


require '../inc/src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
    'appId'  => 'APP ID NUMBER',
    'secret' => 'APP SECRET CODE',
  'scope'  => 'manage_pages,offline_access,publish_stream'
));

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>php-sdk</title>
    <style>
      body {
        font-family: 'Lucida Grande', Verdana, Arial, sans-serif;
      }
      h1 a {
        text-decoration: none;
        color: #3b5998;
      }
      h1 a:hover {
        text-decoration: underline;
      }
    </style>
  </head>
  <body>
    <h1>php-sdk </h1>

    <?php if ($user): ?>
      <a href="<?php echo $logoutUrl; ?>">Logout</a>
    <?php else: ?>
      <div>
        Login using OAuth 2.0 handled by the PHP SDK:
        <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
      </div>
    <?php endif ?>

    <h3>PHP Session</h3>
    <pre><?php print_r($_SESSION); ?>

Вы

image/picture">

Ваш пользовательский объект (/ me)

<?php print_r($user_profile); ?>
Вы не подключены. 'Garage Band!', 'Link' => 'http://www.fancyapps.com/',' caption '=>' Ищете тысячи посетителей! ');$ facebook-> api ("/ me / feed", "post", $ args);?>
...