【问题标题】:Newly Generated Dropbox Token Expires Instantly新生成的 Dropbox 令牌立即过期
【发布时间】:2014-03-19 22:43:10
【问题描述】:

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

HTTP status 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 并显示警告。即使令牌是在几秒钟前生成的,也会发生这种情况。

谁能告诉我什么是错的?

【问题讨论】:

    标签: php dropbox dropbox-api dropbox-php


    【解决方案1】:

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

    list($accessToken, $dropboxUserId) = $webAuth->finish($authCode);
    

    换句话说,我确实使用了错误的令牌。哈哈。代码的最后一个 sn-p 应该是:

     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>";
      }
    

    【讨论】:

    • 谢谢安迪。我在使用 Python 时也犯了同样的错误,这帮助我意识到自己做错了什么!
    猜你喜欢
    • 2019-05-31
    • 2019-03-10
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2021-12-18
    • 2018-01-26
    相关资源
    最近更新 更多