2015-05-25 2 views
2

Я пытаюсь выполнить некоторую настройку для базового кода для аутентификации в Dropbox. Я хочу, чтобы мое приложение выполняло аутентификацию пользователя непосредственно с помощью Dropbox, при этом не выполнялась третья аутентификация. Поэтому в основном единственная проверка подлинности, которую я хочу иметь, - против Dropbox. В настоящее время у меня две проблемы:Проблемы с переадресацией и сеансами в Dropbox SDK

  1. Код, в который я пришел, входит в бесконечный цикл переадресации.
  2. Я получаю следующее сообщение об ошибке PHP, я думаю, связанные с $_SESSION:

    [Mon May 25 12:45:40.651325 2015] [:error] [pid 6568] [client 127.0.0.1:48900] PHP Fatal error: Uncaught exception 'Dropbox\\WebAuthException_Csrf' with message 'Expected '0_2rtH-FFcAqzX4JLKPVKw==', got 'zdmJEkNgto3lA7qAgGW2SQ=='.' in /var/www/php/oauth/vendor/dropbox/dropbox-sdk/lib/Dropbox/WebAuth.php:242\nStack trace:\n#0 /var/www/php/oauth/web/dropbox_finish.php(11): Dropbox\\WebAuth->finish(Array)\n#1 {main}\n thrown in /var/www/php/oauth/vendor/dropbox/dropbox-sdk/lib/Dropbox/WebAuth.php on line 242 
    

Это мой код start.php:

session_start(); 
require_once __DIR__.'/../vendor/autoload.php'; 
$key = "fttwagu78r37ped"; 
$secret = "9s10lkjhrwpujbl"; 
$GLOBALS['app_name'] = "oauth-php/1.0"; 
$GLOBALS['redirectURI'] = "https://oauth.dev/dropbox_finish.php"; 
$GLOBALS['HomeURI'] = "https://oauth.dev"; 

$appInfo = new Dropbox\AppInfo($key, $secret); 
$csrfTokenStore = new Dropbox\ArrayEntryStore($_SESSION, 'dropbox-auth-csrf-token'); 
$webAuth = new Dropbox\WebAuth($appInfo, $GLOBALS['app_name'], $GLOBALS['redirectURI'], $csrfTokenStore); 

$authURL = $webAuth->start(); 
header("Location: $authURL"); 

и это dropbox_finish.php:

require_once "../app/start.php"; 
try { 
    list($accessToken, $userId, $urlState) = $webAuth->finish($_GET); 
    assert($urlState === null); // Since we didn't pass anything in start() 
} 
catch (dbx\WebAuthException_BadRequest $ex) { 
    error_log("/dropbox-auth-finish: bad request: " . $ex->getMessage()); 
    // Respond with an HTTP 400 and display error page... 
} 

Может ли кто-нибудь помочь мне с этим?

ответ

1

Похоже, вы включили start.php в dropbox_finish.php, но start.php звонит $webAuth->start(), а затем перенаправляет пользователя.

Убедитесь, что деталь, которую вы указываете в dropbox_finish.php, не имеет этого вызова и не устанавливает заголовок Location.

+0

Это сработало спасибо ... – wti

Смежные вопросы