大家好,最近在实现移动端微信用户直接通过微信服务号注册、登录我们的网站,之前 PC 端采用的是 Devise 用户注册系统。目前想将 Devise 的邮箱注册改为微信注册(通过微信 OAuth2.0 授权登录识别用户 ID),而邮箱为可选项。大家有没有什么建议?是不是需要摒弃 Devise,重写注册系统?
这篇文章描述了如何将 devise email 换成 username http://alexvpopov.github.io/blog/2013/10/31/allow-users-to-authenticate-with-username-only-using-devise-activeadmin-rails-4-and-ruby-2/ ,或许可以按照这个方式把 email 换成 微信用户 ID
如果要通过 直接通过微信服务号注册
而不是微信 Oauth2 的话,需要在 devise 中单独对微信写一套注册的逻辑,
其中的坑比较多,建议不使用 devise, 自己实现登录注册模块.
http://account.fir.im/signin?sns=1, 这里的微信登录,就是在 devise 中对微信单独写了一套注册登录的逻辑,与其他的第三方登录完全不一样。
#9 楼 @neverlandxy_naix 体验了一下 fir.im , 不清楚为什么微信登陆后需要修改密码,这个密码在什么地方用到了吗(只看到邮箱登陆需要密码)?
#9 楼 @neverlandxy_naix 另外一个问题,通过扫描微信号二维码实现微信登陆(而非 Oauth), 那么已经关注公众号的用户如何在手机微信客户端直接登陆网站账户呢(貌似 fir.im 不需要这个功能)?
@dailysunshine 修改密码这个是个 bug, 工程师还没有改 手机端要微信登录,那么靠关注服务号这种方式是行不通的,必须使用微信的 Oauth
@neverlandxy_naix 想请教一下,如果实现只用 openid 当账号,大概流程通过微信网页授权接口获取到用户 openid,第一次授权的话就自动生成一个 user 并且自动登录,之前授过权的话就自动登录。如果这需要这样的话,自己写一套注册登录会比较好吗?还有一点就是自己写的话,密码还需要吗?
@ztt 自己写比较好,很简单的,如果使用 devise, 很可能需要重写 RegistrationsController#create
方法
另外,密码需不需要的问题,是看你的业务需求了,业务需要密码的话,就加上密码。
大概需要为微信用户创建一个帐户,帐户的登录标示可以用 open_id,这样从微信访问应该是可以验证。问题是,如果微信用户直接访问你的网站,要么集成微信的认证,要么你再让微信用户绑定一个手机号。通常一些 app 推广的时候,会通过发送优惠券的方式,获得手机号。这样,如果他们访问你的网站时候,也可以通过手机,短信方式登录。