Подтвердить что ты не робот

Работа с ошибкой Oauth 2.0-facebook gem 100: этот код авторизации был использован

Я работаю над настройкой аутентификации facebook для своего приложения rails и во время тестирования, после входа в мою учетную запись на facebook, я продолжаю получать эту ошибку:

OAuth2::Error:
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}

Я не уверен, с чего начать, но, похоже, не может найти что-нибудь еще в Интернете. Любое руководство будет оценено, с удовольствием предоставит больше информации, если это будет полезно.

4b9b3361

Ответ 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" на "/", после сохранения информации пользователя в моей базе данных, казалось, имело значение.

Я бы предложил проверить ваш журнал разработки, чтобы узнать, есть ли у вас подобная ошибка.