Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 新生成的Dropbox令牌立即过期_Php_Dropbox_Dropbox Api_Dropbox Php - Fatal编程技术网

Php 新生成的Dropbox令牌立即过期

Php 新生成的Dropbox令牌立即过期,php,dropbox,dropbox-api,dropbox-php,Php,Dropbox,Dropbox Api,Dropbox Php,我在这里遇到了一个奇怪的问题,当我通过Dropbox获得令牌并尝试测试它时,会抛出一个异常,并显示以下消息: HTTP状态401{“错误”:“给定的OAuth 2访问令牌不存在 存在或已过期。“} 为什么Dropbox令牌一生成就过期 让我向您展示我的应用程序的流程: 用户看到此屏幕: 其中包含以下相关PHP代码: require "../../includes/dropbox-sdk/Dropbox/autoload.php"; require "../../includes/config.

我在这里遇到了一个奇怪的问题,当我通过Dropbox获得令牌并尝试测试它时,会抛出一个异常,并显示以下消息:

HTTP状态401{“错误”:“给定的OAuth 2访问令牌不存在 存在或已过期。“}

为什么Dropbox令牌一生成就过期

让我向您展示我的应用程序的流程:

用户看到此屏幕:

其中包含以下相关PHP代码:

require "../../includes/dropbox-sdk/Dropbox/autoload.php";
require "../../includes/config.php";
session_start();
session_regenerate_id();
$appInfo = Dropbox\AppInfo::loadFromJsonFile("../../includes/dropbox-sdk/Dropbox/app-info.json");
$webAuth = new Dropbox\WebAuthNoRedirect($appInfo, "Mignori-Box/1.0");

$authorizeUrl = $webAuth->start();
好的,我们用官方SDK生成一个Dropbox授权URL,它似乎工作正常,用户看到这个屏幕:

他们点击allow,Dropbox给他们一个授权令牌,然后他们将其粘贴到我的站点,并提交。这是处理表单的代码:

      try
      {
          $accessToken = $_POST['authorization_code'];

          $dbxClient = new Dropbox\Client($accessToken, "Mignori-Box/1.0");
          $accountInfo = $dbxClient->getAccountInfo();
      }catch(Exception $e)
      {
          echo "<div class=\"alert alert-danger\">";
          echo "<strong>An error has occurred.</strong><br>" . $e -> getMessage();
          echo "</div>";
      }
试试看
{
$accessToken=$\u POST['authorization\u code'];
$dbxClient=newdropbox\Client($accessToken,“Mignori-Box/1.0”);
$accountInfo=$dbxClient->getAccountInfo();
}捕获(例外$e)
{
回声“;
echo“发生错误。
”$e->getMessage(); 回声“; }
但是,无论令牌有多近,当用户提交令牌时,就会调用catch并显示警告。即使令牌是在几秒钟前生成的,也会发生这种情况


有人能告诉我出了什么问题吗?

我忘记了将授权码转换为访问令牌的步骤

list($accessToken, $dropboxUserId) = $webAuth->finish($authCode);
换句话说,我确实使用了错误的代币。哈哈。最后一段代码应该是:

 try
  {
      list($accessToken, $dropboxUserId) = $webAuth->finish($_POST['authorization_code']);

      $dbxClient = new Dropbox\Client($accessToken, "Mignori-Box/1.0");
      $accountInfo = $dbxClient->getAccountInfo();
  }catch(Exception $e)
  {
      echo "<div class=\"alert alert-danger\">";
      echo "<strong>An error has occurred.</strong><br>" . $e -> getMessage();
      echo "</div>";
  }
试试看
{
列表($accessToken,$dropboxUserId)=$webAuth->finish($\u POST['authorization\u code']);
$dbxClient=newdropbox\Client($accessToken,“Mignori-Box/1.0”);
$accountInfo=$dbxClient->getAccountInfo();
}捕获(例外$e)
{
回声“;
echo“发生错误。
”$e->getMessage(); 回声“; }
我忘记了将授权码转换为访问令牌的步骤

list($accessToken, $dropboxUserId) = $webAuth->finish($authCode);
换句话说,我确实使用了错误的代币。哈哈。最后一段代码应该是:

 try
  {
      list($accessToken, $dropboxUserId) = $webAuth->finish($_POST['authorization_code']);

      $dbxClient = new Dropbox\Client($accessToken, "Mignori-Box/1.0");
      $accountInfo = $dbxClient->getAccountInfo();
  }catch(Exception $e)
  {
      echo "<div class=\"alert alert-danger\">";
      echo "<strong>An error has occurred.</strong><br>" . $e -> getMessage();
      echo "</div>";
  }
试试看
{
列表($accessToken,$dropboxUserId)=$webAuth->finish($\u POST['authorization\u code']);
$dbxClient=newdropbox\Client($accessToken,“Mignori-Box/1.0”);
$accountInfo=$dbxClient->getAccountInfo();
}捕获(例外$e)
{
回声“;
echo“发生错误。
”$e->getMessage(); 回声“; }
谢谢你,安迪。我在使用Python时犯了同样的错误,这帮助我意识到我做错了什么!谢谢你,安迪。我在使用Python时犯了同样的错误,这帮助我意识到我做错了什么!