Я работаю над 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 и идентификатор сеанса. Это связано с тем, что мне нужно перенаправить файл file.php из файла RedirectURI.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 я получаю код аутентификации и параметры, которые я отправил, разделенные символом pipe. После создания сеанса я помещал массив $ _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
Я понятия не имею, почему это происходит.