@torvaldsdb 也可以自己定义一个路由,然后比如你有一个参数 code,这个 code 在你数据库是一个唯一的值,生成类似 localhost:3000/controller/action?code=xxx,然后你可以用 js 插件把这个链接生成二维码,然后用微信扫一扫的功能的时候,你就可以根据这个 code 参数,然后去做你的逻辑了,不知道这样说能不能符合你的要求
我最近搞定了绑定微信和扫码登录的功能,我这是用公众平台的二维码功能做的山寨版。正版请用 开放平台的 OAuth
扫码登录功能也类似,因为只有一个 scene_id 可用,所以要扩展一下 user_scene 表,加个 typ,如果为 0 是绑定,如果为 1 是登录。还要加一个 wechat_id 字段。
还有一些细节就不多说了,比如说清理 user_scene 表,登录页面上把 scene_id 加盐 md5 一下 之类的。
微信提供了其它的扫一扫功能,如果自己想实现一些 与 wechat_id 相关的扫一扫的功能,用 scene_id 和一个 user_scene 表就可以了,typ 字段可以再多加定义。
@ice_7 很高兴看到你认真的回帖,你提到的那种思路,其实有个叫做"草料二维码"直接可以实现,我想做的是扫一扫的功能,就是读取二维码中的隐藏的东西。
最近做了一个扫二维码加好友的功能,使用 weixin_authorize,基本思路是生成的二维码带有随机数生成的 scene_id,scene_id 绑定用户,用户扫码后会获取 scene_id 和 open_id 进行处理
weixin_authorize 会生成weixin_controller_decorator.rb
,自带handle_scan_event
方法
重写此方法
# 扫描带参数二维码事件: 2. 用户已关注时的事件推送
def handle_scan_event
# reply_text_message("扫描带参数二维码事件: 2. 用户已关注时的事件推送, keyword: #{@keyword}")
scene_id = @keyword
openid = @weixin_message.FromUserName
message = User.bind_user openid,scene_id
reply_text_message(message)
end
目前的二维码主要是 QR 二维码, 原理:http://www.ams.org/samplings/feature-column/fc-2013-02 在线读取:https://zxing.org/w/decode.jspx JS 读取库:https://github.com/LazarSoft/jsqrcode