在要求访问令牌

时间:2015-04-24 10:55:07

标签: php dropbox-api

我正在开发一个PHP应用程序,我需要在其中集成Dropbox。我在file1.php文件中这样做。以下是代码:

require_once ("../dropbox-sdk/Dropbox/autoload.php");
    use \Dropbox as dbx;
    $appInfo = dbx\AppInfo::loadFromJsonFile("../dropbox-config.json");
    $csrfTokenStore = new dbx\ArrayEntryStore($_SESSION, 'dropbox-auth-csrf-token');
    $webAuth = new dbx\WebAuth($appInfo, "MyApp", "https://example.net/app2/OAuthRedirectURI.php", $csrfTokenStore);
    $authorizeUrl = $webAuth->start('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']."|".session_id());

由于重定向uri不能动态,我已指定将uri重定向到https://example.net/app2/RedirectURI.php

$webAuth->start()方法中,我发送了file1.php和会话ID的完整路径。这是因为,我需要从RedirectURI.php文件重定向到file1.php。

以下是RedirectURI.php的代码:

$stateArray = explode("|", $_GET['state']);
    session_id($stateArray[2]);
    session_start();
    $_GET['state'] = $stateArray[0];
    $_SESSION['DBX_AUTH_CODE_GET'] = $_GET;
    header("location:".$stateArray[1]);

在RedirectURI.php中,我收到了我发送的身份验证代码和参数,用管道符号分隔。创建会话后,我将$ _GET数组放入会话并重定向到file1.php。

在file1.php中,以下是获取访问令牌的代码:

if(isset($_SESSION['DBX_AUTH_CODE_GET'])){
$x = $_SESSION['DBX_AUTH_CODE_GET'];
        list($accessToken, $userId, $urlState) = $webAuth->finish($x);
        echo "access token: " . $accessToken;
    }

但它显示错误:

PHP fatal error in line 242 of file /var/www/html/example/public_html/app2/dropbox-sdk/Dropbox/WebAuth.php.
Uncaught exception 'Dropbox\WebAuthException_Csrf' with message 'Expected '6r9eW-MB82JxkJU9AE7u9g==', got 'KkgZk4491XEPhsn_14EObw=='.' in 
/var/www/html/example/public_html/app2/dropbox-sdk/Dropbox/WebAuth.php:242nStack trace:n#0 /var/www/html/example/public_html/app2/pm/file1.php(40): 
Dropbox\WebAuth->finish(Array)n#1 {main}n thrown

我不知道为什么会这样。

0 个答案:

没有答案