ruby on rails--rails中google身份验证 google-api-client

最终在rails应用中想实现的效果是可以通过谷歌账号进行登录,效果如下:

选择完对应的账号后,可以执行确认操作去登录
在这里插入图片描述
在这里插入图片描述

在开始之前,需要去google配置一个对应的project,并且拿到对应Client ID 和 Client Secret
具体操作步骤已经有文档,可以直接打开进行
https://github.com/brunoao86/rails-third-party-auth/wiki/How-to-configure-Google-Auth-on-the-app

https://ktor.kotlincn.net/quickstart/guides/oauth.html
两篇基本一样的,可以对比看看。配置结束可以找到对应的id secret
在这里插入图片描述

接下来,进行rails项目中的配置使用

Gemfile添加对应的gem,当前使用的是google-api-client

gem 'google-api-client', require: 'google/apis/calendar_v3'

在config/secrets.yml中配置对应的id和secret

google_client_id:  xxxxxxxxxxxxxxxxxxxxxxxxxxxx
google_client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

在这里插入图片描述

对应的html触发位置

<a href="/login/google_auth" style="margin:right">login with google</a>

对应的controller位置

# 页面触发的代码
def google_auth
 	client = Signet::OAuth2::Client.new(client_options)
 	url = Google::Auth::WebUserAuthorizer.handle_auth_callback_deferred(
	request)
   	redirect_to client.authorization_uri.to_s
end
# redirect_uri 需要和Google API那边的填写的一致,不一致可能会提示错误400:redirect_uri_mismatch
def client_options
	{
		client_id: Rails.application.secrets.google_client_id,
		client_secret: Rails.application.secrets.google_client_secret,
		authorization_uri: 'https://accounts.google.com/o/oauth2/auth',
		token_credential_uri: 'https://accounts.google.com/o/oauth2/token',
		scope: 'https://www.googleapis.com/auth/drive',
		redirect_uri: 'http://localhost:3000/auth/google_oauth2/callback'
	}
end

oauth2callback的route.rb配置如下:

get '/auth/google_oauth2/callback', to: 'login#oauth2callback'

这里处理结束后,页面就可以去验证当前google账户了 ,操作完成后,还要去执行oauth2callback,处理验证通过后的后续操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从心、Sunshine

赞助点植发的money,球球了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值