OAuthException: этот код авторизации был использован - Facebook
Кажется, что новый релиз Facebook 5 декабря вызывает у меня некоторые проблемы. Кто-нибудь еще получает эту ошибку?
Коала::Facebook::APIError (OAuthException: Этот код авторизации был использован.)
Я могу oauth, но когда я делаю вызов, делая следующее... я получаю ошибку. то есть ниже:
@friends = graph.get_object("/me/friends")
Вот обновление Facebook:
Новые ограничения безопасности для кодов авторизации OAuth. Мы будем разрешать обмен авторизационных кодов только для токенов доступа один раз и потребовать их замены на токен доступа в течение 10 минут после их создания. Это соответствует спецификации OAuth 2.0, которая с самого начала заявляла, что "коды авторизации ДОЛЖНЫ быть кратковременными и одноразовыми". Для получения дополнительной информации ознакомьтесь с нашей документацией по аутентификации.
Если кто-то может помочь или даже более конкретно уточнить, что означает обновление Facebook, это было бы очень полезно. Я получаю это используя Rails Koala Gem.
Кажется, здесь сообщается, но ответы не помогли.
http://developers.facebook.com/bugs/121266004701942?browse=search_50c113068fae60719135553
2 ответа
Вы вставили драгоценный камень omniauth_facebook? Поместите следующий код в intializers/omniauth.rb.
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['app_id'], ENV['secret_id']
end
Это их разочаровывающее изменение - в основном вам нужно кэшировать в сессии каждый раз, когда вы загружаете get_user_info_from_cookies
fb_user = session[:fb_info] || oauth.get_user_info_from_cookies(cookies)
session[:fb_info] = fb_user
session[:fb_token] = fb_user['access_token'] # is is the right one?
К сожалению, он по-прежнему будет вызывать ошибки, потому что это будет действительно старый код из сеанса с истекшим сроком действия. Я обертываю его в блоке begin / rescue и прошу пользователя нажать, чтобы снова вернуться к oauth (который получит новый токен), или попробовать войти в систему без facebook / и т.д.