Cette fois, j'ai résumé ce à quoi j'étais accro lors de la mise en œuvre de l'authentification Google avec des rails, donc pour référence. Articles auxquels j'ai fait référence lors de la mise en œuvre de l'authentification Google ↓ [Rails] Implémentez l'enregistrement des utilisateurs sur Facebook / Twitter / Google à une vitesse explosive en utilisant Devise & Omniauth
Premier. Il s'agit d'une erreur qui s'est produite lorsque j'ai essayé de m'authentifier en sélectionnant un compte sur la page d'authentification Google. On m'a dit qu'il n'y avait pas de client_id. Il y a deux causes ① Il y avait un espace ② La clé a été saisie telle quelle sans utiliser .env
① Espace
devise.rb
config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'] ,ENV['GOOGLE_CLIENT_SECRET'], skip_jwt: true
De
devise.rb
config.omniauth :google_oauth2,ENV['GOOGLE_CLIENT_ID'],ENV['GOOGLE_CLIENT_SECRET'],skip_jwt: true
Changé en. Il semble que je n'avais pas besoin d'espace. Il y avait de l'espace sur le site de référence.
② La clé a été saisie telle quelle sans utiliser .env D'après ce que je peux voir sur d'autres sites, il semble que certaines personnes pourraient y aller tel quel, mais cela n'a pas fonctionné dans mon environnement. Si vous ne pouvez pas le résoudre, essayez d'ajouter gem'dotenv-rails '.
La prochaine chose qui est sortie était cette erreur Si vous le faites normalement, il s'affichera si le courrier n'est pas authentifié. c'est
qiita.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  # callback for google
  def google_oauth2
    callback_for(:google)
  end
  # common callback method
  def callback_for(provider)
    @user = User.from_omniauth(request.env["omniauth.auth"])
    @user.skip_confirmation!← avec ça
    @user.save!← Ça!
    if @user.persisted?
      sign_in_and_redirect @user, event: :authentication #this will throw if @user is not activated
      set_flash_message(:notice, :success, kind: "#{provider}".capitalize) if is_navigational_format?
    else
      session["devise.#{provider}_data"] = request.env["omniauth.auth"].except("extra")
      redirect_to new_user_registration_url
    end
  end
  def failure
    redirect_to root_path
  end
  
end
@user.skip_confirmation! @user.save! A été résolu en le mettant dans le contrôleur.
J'ai créé une application appelée Public Diary. C'est une application qui vous permet de publier votre agenda (il est possible de ne pas le publier), mais je suis le seul à l'utiliser (en pleurs). Veuillez le vérifier car il est mis à jour presque tous les jours. S'il vous plaît.
URL: https://public-diary.herokuapp.com/
En fait, j'ai essayé d'implémenter l'authentification sns environ 4 fois et j'ai échoué à plusieurs reprises. J'ai pu le faire pour la première fois cette fois, mais j'étais très heureux quand j'ai pu le faire. Merci d'avoir regardé jusqu'à présent.