Работа с ошибкой Oauth 2.0-facebook gem 100: этот код авторизации был использован
Я работаю над настройкой аутентификации facebook для своего приложения rails и во время тестирования, после входа в мою учетную запись на facebook, я продолжаю получать эту ошибку:
OAuth2::Error:
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
Я не уверен, с чего начать, но, похоже, не может найти что-нибудь еще в Интернете. Любое руководство будет оценено, с удовольствием предоставит больше информации, если это будет полезно.
Ответы
Ответ 1
Эта ошибка произошла сразу после последнего facebook push и была сообщена на facebook только сегодня утром.
Итак, я думаю, нам просто нужно подождать, а пока опубликуйте более подробные сведения об этом отчете и следуйте за ним, чтобы помочь и заставить людей facebook решить эту проблему!
Ответ 2
У меня тоже была эта проблема. Я видел фазу "Обратный звонок" (facebook) ". дважды в моих журналах Rails. Оказывается, что я дважды инициализировал проверку подлинности FB (я использую Devise и Omniauth-Facebook), и я предполагаю, что одна из них пыталась использовать reset токен доступа.
Отключение инициализатора в Omniauth-Facebook (config/initializers/omniauth.rb) устраняет мою проблему.
Ответ 3
Это связано с изменениями в Facebook, которые до сих пор были дополнительными, но будет выпущен 12/5/12 для всех. Из "Дорожная карта разработчика" для изменений в Dec'12:
Новые ограничения безопасности для кодов авторизации OAuthМы будем только разрешить обмен кодами авторизации для токенов доступа один раз и потребует, чтобы их обменяли на токен доступа в течение 10 минут их создания. Это соответствует спецификации OAuth 2.0 который с самого начала заявил, что "коды авторизации ДОЛЖНЫ быть короткоживущие и одноразовые". Для получения дополнительной информации ознакомьтесь с нашими Документация по аутентификации.
Вам нужно будет обновить свое приложение до учетной записи.
Приветствия
Ответ 4
Я дважды неправильно инициализировал OmniAuth
, дважды набрав config/initializers/omniauth.rb
.
Это добавит OmniAuth::Builder
дважды в стек промежуточного программного обеспечения. При последних изменениях в Facebook это привело к ошибке с ошибкой 100
.
Убедитесь, что OmniAuth::Builder
добавлен, когда мне удалось решить эту проблему.
Чтобы дважды проверить свой стек промежуточного программного обеспечения, запустите это:
rake middleware
Ответ 5
У меня была такая же проблема и, наконец, я выяснил, в чем дело.
Поэтому для тех, у кого есть эта проблема, и использует только Omniauth без Devise, основная причина проблемы может быть неправильным маршрутом для перенаправления.
- Проверьте сервер development.log
- Найти, где он перенаправляется (grep by "Перенаправлено на" )
- Вот основной вопрос: Проверьте журнал, если правильный URL-адрес обратного вызова
В моем случае, в routes.rb, я имел, например:
get "mycontroller/home"
что хорошо, но в моем SessionController у меня также было:
def create
auth_hash = request.env['omniauth.auth']
user = User.from_omniauth(auth_hash)
session[:user_id] = user.id
redirect_to "mycontroller/home"
end
Итак, я сделал это, изменив эту строку в контроллере:
redirect_to "mycontroller/home"
to
redirect_to "/mycontroller/home"
Ответ 6
Так что я смог обойти это. Похоже, что мое приложение обрабатывало аутентификацию facebook, а затем пыталось сделать это во второй раз и произвести эту ошибку. Странно, так как я пытался перенаправить на root_url. В любом случае изменение страницы, с которой я перенаправлялся с "root_url" на "/", после сохранения информации пользователя в моей базе данных, казалось, имело значение.
Я бы предложил проверить ваш журнал разработки, чтобы узнать, есть ли у вас подобная ошибка.