【问题标题】:Facebook Graph Error This authorization code has expiredFacebook Graph 错误 此授权码已过期
【发布时间】:2017-06-29 11:19:50
【问题描述】:

您好,先生,我正在使用 Fb Php Sdk 4 和 Graph 2.8,我知道它有点过时,但我想继续使用它。只有经过授权的问题修复才能完成我的项目

我使用了下面的配置和登录数据页面,但它返回给我

图表返回错误:此授权码已被使用。

在我的代码下面

config.php

  <?php
session_start();
$_IM=array(
    "sitename" => "AppsFunny",
    "siteurl" => "http://appsfunny.com",
    "sitelogo" => "AppsFunny.Com",
    "fb_page" => "/appsfunny",
    "aurl" => "appsfunny.com"
    );
include "ifunc.php";
include "db.php";
include "Unicode2Bijoy.class.php";
$app_id='423436984657946';
require_once __DIR__ . '/vendor/autoload.php';
use Facebook\FacebookRequest;
$fb = new Facebook\Facebook([
  'app_id' => $app_id,
  'app_secret' => 'c82ff16cec2f6a055302c5c632c0129b',
  'default_graph_version' => 'v2.8',
]);




if (isset($_SESSION['access_token'])) {
  $token = $session->getToken();
   try {
              // Returns a `Facebook\FacebookResponse` object
              $response = $fb->get('/me', $token);
            } catch(Facebook\Exceptions\FacebookResponseException $e) {
              echo 'Graph returned an error: ' . $e->getMessage();
              exit;
            } catch(Facebook\Exceptions\FacebookSDKException $e) {
              echo 'Facebook SDK returned an error: ' . $e->getMessage();
              exit;
            }

            $user = $response->getGraphUser();

                  $_SESSION['FBID'] = $user['id'];           
                  $_SESSION['FULLNAME'] = $user['name'];
                  $_SESSION['propic']="https://graph.facebook.com/".$_SESSION['FBID']."/picture?height=200&width=200";
            }


?>

和 login.php

      <?php 
        require_once __DIR__ . '/config.php'; 
$p=$_GET["p"]; 
        $helper = $fb->getRedirectLoginHelper();

        $_SESSION['FBRLH_state']=$_GET['state']; 

        try { 
        $accessToken = $helper->getAccessToken(); 
        }
         catch(Facebook\Exceptions\FacebookResponseException $e) { 
        // When Graph returns an error 
        echo 'Graph returned an error: ' . $e->getMessage(); exit; 
        } 

        catch(Facebook\Exceptions\FacebookSDKException $e) { 
        // When validation fails or other local issues 
        echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
        exit; 
        } 

        if (isset($accessToken)) { 
        $access_token = $session->getToken(); 
    $_SESSION['access_token'] = (string) $accessToken; 
    header("location:".$p); 
        }

【问题讨论】:

  • 我试过了,先生,但不行
  • 请以可读的方式格式化 login.php 代码。顺便说一句,如果您不只是尝试修复旧的现有系统,而是要创建新的系统 - 那么我强烈建议您使用 PHP SDK v5,而不是过时的 v4。
  • login.php 可读兄弟。我为此浪费了很多时间,所以想在同一版本中完成项目

标签: php facebook-graph-api facebook-php-sdk


【解决方案1】:

原因

出现此问题是因为您尝试在每次页面加载或重新加载时请求access_token。当您请求令牌时,会随 URL 一起传递一个唯一代码。当你用同一个令牌一次又一次地请求时,就会出现这个错误。

解决方案

所以在得到access_token 后,将其保存在db 中。并且仅在您没有 access_token 或它不再有效时才请求新令牌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 2013-02-20
    • 2016-03-05
    相关资源
    最近更新 更多