Я установить твиттер систему входа и получил сообщение об ошибке выше вокруг кодовНет маршрута матчей {: действие => «показать»,: контроллер => «члены»,: идентификатор => NIL}
redirect_to member_path(session[:user_id]), :notice => "#{auth["info"]["name"]}さんの#{auth["provider"]}アカウントと接続しました。"
в def обратном вызове session_controller.rb. Интересно, почему это произошло из-за того, что этого не произошло, когда я установил логин facebook с помощью gem. Как вы могли бы рассказать мне, почему это произошло и как это решить?
Я проверил некоторые элементы. Новый пользователь был создан через вход в twitter. И я мог бы получить «сеанс». Но не удалось получить сеанс [: user_id].
☆ member.rb
def self.create_with_omniauth(auth)
create! do |member|
member.provider = auth["provider"]
member.uid = auth["uid"]
member.mail = auth["mail"]
member.image = auth["info"]["image"]
if member.provider == "facebook"
member.name = auth["info"]["name"]
else
member.name = auth["info"]["nickname"]
end
end
end
☆ sessions_controller
def callback
#omniauth.auth環境変数を取得
auth = request.env["omniauth.auth"]
#Userモデルを検索
member = Member.find_by_provider_and_uid(auth["provider"], auth["uid"])
if member
# 既存のユーザ情報があった場合ルートに遷移させます
session[:user_id] = member.id
redirect_to member_path(session[:user_id]), :notice => "ログインしました。"
else
# Userモデルに:providerと:uidが無い場合(外部認証していない)、保存してからルートへ遷移させる
Member.create_with_omniauth(auth)
redirect_to member_path(session[:user_id]), :notice => "#{auth["info"]["name"]}さんの#{auth["provider"]}アカウントと接続しました。"
end
end
сделать вы используете любой камень для аутентификации? – gotva
Я использую драгоценный камень omuniauth. Спасибо. gem 'omniauth' gem 'omniauth-facebook' 'omniauth-twitter' –