Привет Я пытаюсь создать регистрацию oauth через omniauth, используя buffer2. Вот что я имею до сих пор, проблема, с которой я сейчас сталкиваюсь, заключается в том, что я перенаправляюсь на путь new_user_registration_path.omniauth не регистрирует пользователя по какой-то странной причине?
Я попал на сайт буферов, где я принимаю, что приложение получает права.
omniauth_callbacks_controller.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def buffer
@user = User.find_for_buffer(request.env["omniauth.auth"], current_user)
if @user.persisted?
flash[:notice] = "devise.omniauth_callbacks.success"
sign_in_and_redirect @user, :event => :authentication
else
session["devise.buffer_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
и в модели:
def self.find_for_buffer(access_token, signed_in_resource=nil)
data = access_token.info
user = User.where(:provider => access_token.provider, :uid => access_token.uid).first
if user
user
else
user = User.create(
email: data.email,
provider: access_token.provider,
uid: access_token.uid,
password:Devise.friendly_token[0,20]
)
end
user
end
сайт возвращает меня к new_user_registration_url, и консоль говорит:
INFO -- omniauth: (buffer) Callback phase initiated.
Processing by Users::OmniauthCallbacksController#buffer as HTML
Parameters: {"state"=>"3ee6956fe2d74bf9a114a29cc55c9c70260aba7f0bd402d9", "code"=>"1/686ea44403ab403d0c6e647338a936f8"}
User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."provider" = 'buffer' AND "users"."uid" = '526362667f9a1f3f5994515a' ORDER BY "users"."id" ASC LIMIT 1
(0.2ms) BEGIN
(0.2ms) ROLLBACK
Redirected to http://localhost:3000/users/sign_up
Completed 302 Found in 108ms (ActiveRecord: 1.0ms)
Я также прикрепил URL для документации апи они предлагают, поскольку я новичок, это не имеет для меня никакого смысла, плюс их документация, на мой взгляд, несколько дерьмовая, как хорошо: https://bufferapp.com/developers/api
Проблема в том, что '@ user.persisted?' Возвращает 'false'. Вы можете видеть в консоли 'ROLLBACK', что означает, что' user' не сохраняется. Вы должны не выполнять проверку пользователя. – ptd
Я пробовал добавить devise_parameter_sanitizer для регистрации, чтобы разрешить, провайдер, uid и пароль. Все еще не работает. Вы не знаете, почему это может быть? – sja