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.