Я говорил с поддержкой API Dropbox. Они были очень полезны, и предложил ряд вещей:
Эта ошибка указывает, что значение состояния возвращается в переадресацией URI не соответствует маркер CSRF, который был сохранен в сессии. Значение состояния в вашем URL-адресе перенаправления выборки соответствует значению состояния, указанному , на URL-адрес авторизации, поэтому, похоже, проблема связана с значением , сохраненным в сеансе. Несколько вещей, которые приходят на ум, что может привести к это:
- Вы звоните WebAuth.start несколько раз для одного приложения потока авторизации? Если это так, возможно, вы сохраняете токен CSRF для одного, но просматриваете URL-адрес/authorize с другим.
- Не работает ли ваше хранилище сеансов правильно? Dropbox PHP SDK использует csrfTokenStore, передаваемый конструктору WebAuth. Если не может сохранить новый токен CSRF или возвращает устаревшие значения , которые могут вызвать это несоответствие.
- Вы переключаетесь между различными экземплярами приложения и тем самым получаете доступ к разным сеансам?
Оказалось, что это первая теоретизированная проблема. В фоновом режиме произошел звонок AJAX, в котором была проверена логина, которая также перенаправлена на страницу авторизации, создав таким образом несколько запросов. Как только я отключил эту проблему, проблема исчезла.
Если вы измените токен на 'sW2Zy4OD7YBijNHaeCtyjQ ==', это сработает? –
Нет, потому что, когда я копирую ожидаемый код из ошибки, в следующий раз, когда я буду использовать этот код, он не будет действителен и заменен еще одним кодом. – edwardmp
Тот же вопрос: http://stackoverflow.com/questions/29845655/dropbox-showing-error-when-asking-for-access-token – edwardmp