0

我想在我的 Rails API 中实现 google omniauth,但在 sessions_controller 中仍然有错误“:

ArgumentError (wrong number of arguments (given 2, expected 1)):

我的 user.rb 模型:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable,
         :confirmable, :trackable,
         :omniauthable, omniauth_providers: [:google_oauth2]

  def self.create_user_for_google(data)                  
    where(uid: data["email"]).first_or_initialize.tap do |user|
      user.provider="google_oauth2"
      user.uid=data["email"]
      user.email=data["email"]
      user.password=Devise.friendly_token[0,20]
      user.password_confirmation=user.password
      user.save!
    end
  end    
end

我的会话控制器:

# frozen_string_literal: true

require 'httparty'                                                             
require 'json'   
class SessionsController < ApplicationController
  include HTTParty
    def get_signin_token
      url = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=#{params["id_token"]}"                  
      response = HTTParty.get(url)             
      user = User.create_user_for_google(response.parsed_response)    
      tokens = user.create_new_auth_token                      
      user.save
      render json: user
    end
end
4

0 回答 0