微信登录总结 — Ruby on Rails 5

我是 2017 年 1 月 15 号 做好微信登录的。用了 Raisl 5 ,看到网上相关博客好像不多所以写下。

注意

微信开放平台那边“申请网页应用”然后做微信登录是“扫二维码登录”。

微信公众平台这边才是点一个按钮确认一下然后登陆。

公众平台和开放平台有区别的。

基本环境:

Rails 5 + devise + omniauth-wechat-oauth2

注意这里是用了 devise 和 omniauth。如果是原生登录(没用 devise)加微信登录的话流程稍微有些不同,这里就不说了。

一些其他细节

(和这个项目相关,和做微信登录没有关系,仅供参考)

nginx + puma + mina + mysql + boostrap 4 + Ucloud 做服务器

Gemfile

https://rubygems.org/gems/omniauth-wechat-oauth2

Route

omniauth_callbacks 这一行是重点,其他几行没所谓,只是供参考。

Config (config/initializers/devise.rb)

注意这里可以直接写 APPID 和 APP SECRET ,只是我没选择那么做而已。

微信这边要做的配置是

接口权限 -> xxx -> 网页授权域名记得弄好了。

Controller

这里逻辑挺简单的也就不解释了,这个是微信回调的时候会访问到这里来。

sign_in_and_redirect 这个方法是 devise 提供的。

User Model

重要的部分1::omniauthable.

重要的部分2:omniauth_providers => [:wechat]

注意这个 providers 其实不写也成,但是如果你写了什么其他 facebook twitter 之类的,暂时又不想显示 facebook twitter,这里又不写这么个过滤,那么

<%= render “devise/shared/links” %>

就会把 facebook twitter 也输出出来。

重要的部分3:def self.from_omniauth(auth)

访问

/users/auth/wechat 
就是微信登录页面了。

最终效果

(注意这个文字是我自己加的,和微信没有关系)

这个页面的代码我也干脆贴出来供参考:(注意这一段就和微信登录没有关系了,纯粹只是我怎么写 UI 而已,你不用照做的)

界面不是很好看,这不还没做完呢吗。;D

有啥其他问题可留言。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.