我在这里遇到了这个奇怪的问题,在我通过 Dropbox 获得令牌并尝试对其进行测试的那一刻,此消息引发异常:
HTTP 状态 401 {"error": "给定的 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,这似乎工作正常,用户看到这个屏幕:
他们点击允许,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>";
}
但无论令牌有多新,当用户提交令牌时,都会调用 catch 并显示警告。即使令牌是在几秒钟前生成的,也会发生这种情况。
有人可以告诉我有什么问题吗?