PHP SDK v.3.1.1 - «Простой маркер доступа должен использоваться» на простом примере - PullRequest
1 голос
/ 05 октября 2011

У меня были серьезные ошибки в реализации последних версий PHP SDK и OAuth2, поэтому я разбил их на использование предоставленного примера для демонстрации проблемы, с которой я сталкиваюсь.

Я использую этот код.Я получаю OAuthException «Активный токен доступа должен использоваться для запроса информации о текущем пользователе».Когда я нажимаю ссылку «Войти через Facebook», я продолжаю получать эту ошибку, и я не подключен.Обратите внимание, что обычно это работает, когда все файлы cookie и сеансы очищены, но через несколько часов, если я вернусь, он больше не работает.

Я был бы признателен за любую помощь с этим.

Также обратите внимание, что этого нет на странице холста.

<code><?php
ob_start();
/**
 * Copyright 2011 Facebook, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License. You may obtain
 * a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

require_once('../facebook-php-sdk/facebook.php');

include('app3.conf.inc.php');

$facebook = new Facebook(array (
            'appId' => $appConf['appID'],
            'secret' => $appConf['appsecret'],
        ));

// 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?fields=permissions');
  } 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();
}

// This call will always work since we are fetching public data.
try
{
    $naitik = $facebook->api('/naitik');
}
catch (Exception $ex)
{
    echo("Exception with api/naitik:\n<pre>");
    var_dump($ex);
    echo("
"); die ();}?>

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Ошибка была поднята и принята Facebook для последней SDK.Я предлагаю понизить до одного с ранее в 2011 году до тех пор.Это решило мою проблему.

0 голосов
/ 06 октября 2011

Похоже, вы были близко.Ниже php config для facebook я предоставляю запрос if GET, чтобы определить, вышел ли пользователь из системы.Когда они выходят из системы, код внутри условия срабатывает

unset($_COOKIE['fbsr_' . $config['appId']]);

вместо

unset($_COOKIE['fbsr_' . $this->getAppId()]);

Это выглядело как очарование,

...