首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

用公众号来做验证码接收场景

  •  
  •   lzjun · 51 天前 · 2552 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

    任何一个网站或者 APP,如果要避免用户滥用注册功能,就必须确保注册的是真人而不是脚本程序,在 web2.0 时代,我们一般通过验证注册者的邮箱,注册后给用户邮箱发一个激活链接用户主动点击激活链接后才认为是一个真人,否则可能是机器人在注册。

    移动互联网,人人一台手机,注册方式改成了短信验证码,用户输入手机号码,系统会给手机发送一个验证码,必须是有效的验证码才能注册成功。

    以上两种方式我们一般都是用第三方平台,比如邮件服务商有 mailgun,sendcloud,短信平台则更多,这里就不举例,不过大部分平台对个人开发者并不那么友好,或者收费很贵。

    而我尝试使用微信公众号来是实现这种功能,发现效果很好。因微信平台对个人订阅号开放了发送接收信息的接口。具体怎么实现呢? 看看二十次幂项目中我是怎么做的?

    注册时,会有一个获取验证码的入口,点击过去就是告诉你怎么获取验证码

    用户关注公众号之后,每个用户都有唯一的 OPENID,所以我们可以设计一张验证码的表,字段有:

    为了简化,我只列出关键字段

    openid
    code
    valid # 是否有效
    

    账户表:

    email
    password
    openid
    

    为了防止用户多次注册,我们可以限制每个 openid 只能申请一个注册验证码,也就只能注册一个账号。

    用户回复关键字后,我们就给他生成一个验证码记录。这个验证码是唯一的,例如:

    {"openid":"xxxxx", "code":"123", "valid":True}
    

    用户注册时,必须将验证码和邮箱以及密码字段提交,这样,我们就可以通过验证码找到对应的 openid,这样就可以将 openid 关联到对应 email 账号了。

    {"openid":"xxxxx", "email":"[email protected]", "password":"666"}
    

    关联后,也可以通过输入自己的 email 重置密码了,如果你输入别人的 email,是不是也可以重置呢?不行的,因为 email 与 openid 绑定了,你输别人的 email 是对不上你 openid 的

    第 1 条附言  ·  51 天前
    很多留言里面说到为什么不直接接入微信登录,这里统一回答下,网站接入微信登录需要企业认证,所以此路不通
    第 2 条附言  ·  51 天前
    没有看明白的可以体验下流程,测试地址: https://www.ershicimi.com
    41 回复  |  直到 2019-06-29 08:31:33 +08:00
        1
    misaka19000   51 天前
    个人现在更喜欢那种动态验证码登录的功能,这样就不需要密码了
        2
    Tomorrowxxy   51 天前
    49 年入国军?
        3
    lzjun   51 天前
    @misaka19000 如果浏览器记住了密码也不需要每次输入,是不是更省事
        4
    mateor95   51 天前
    那么问题来了,都用上微信公众号了,为什么不直接扫码(网页)或者微信登录( APP )
        5
    ETiV   51 天前
    简单说就是「上行验证码」

    - 每个码都有自己的有效期
    - 同一段时间内,各个验证码都不会重复
    - 验证码生成后展示给用户
    - 用户提交验证码时,即可获得用户的 OpenID,便可以与之绑定(所以 email 也能变成可选项)

    这种流程,我做过 Telegram 的

    QQ 的找回密码,需要用户编辑短信发送到 106XXXXXX 大致上也是这样
        6
    misaka19000   51 天前
    @lzjun #3 这种对多终端登录不友好
        7
    jetpy   51 天前
    我有一个网站就是利用的公众号做用户管理的, 关注公众号后,每次登录前都通过公众号获取密码 自己都觉得略麻烦,好在 APP 那里用户只需要登录一次
        8
    yavin   51 天前
    直接微信登录不是更快
        9
    moonsola   51 天前
    通过微信扫一扫绑定账号不是更方便?
        10
    Jirajine   51 天前 via Android   ♥ 4
    本来就该是邮箱,只是泥国搞什么实名制恶心的用短信。现在你到好,连微信这种垃圾都拿出来当验证了。
        11
    TobiahShaw   51 天前
    为什么不接入微信登录的 SDK 呢
        12
    passerbytiny   51 天前
    想要关联微信 openid,同时又不想让微信审核第三方登录,请直说!
        13
    lzjun   51 天前 via Android
    @mateor95 因为需要企业认证
        14
    lzjun   51 天前 via Android
    @moonsola 需要企业认证
        15
    lzjun   51 天前 via Android
    @Jirajine 你天天用的微信是垃圾?
        16
    npe   51 天前 via Android
    然后大家都要加你好友?
        17
    npe   51 天前 via Android
    @npe 注册之前还得加你微信?
        18
    annielong   51 天前
    更利于吸粉吧,前段时间地铁充值还让关注一个公众号,没两天这个公众号就成了一个营销号,
        19
    Jirajine   51 天前 via Android   ♥ 2
    @lzjun 你天天用微信?
    你这默认人人都用微信可比那些默认人人都用手机强制绑定(还能甩锅 zf )恶心的多了。
        20
    LeonKennedy   51 天前
    西部数码就是这么干的。我设置的 qq 快捷登陆,他会跳转到一个界面,让你扫码关注西部数码,然后通过公众号回复给你验证码
        21
    MonoLogueChi   51 天前 via Android
    @mateor95 微信登录需要认证才可以
        22
    shijingshijing   51 天前   ♥ 1
    把自己的业务命运和 [email protected] 绑定到一起,很好很强大。

    未来不知道什么时候公众号出发了威信的 G 点,给你把公众号一封,一刀就给你把客户源全部剁掉,你哭都来不及。
        23
    starsky007   51 天前 via Android
    邮件和短信都是开放的,而微信不是
        24
    daomen   51 天前 via iPhone
    6sq.net 这个网站就是在微信公众号回复关键词获取验证码的。主程序用的 wecenter。
        25
    version   51 天前
    短信验证码接口.很多云平台都不需要企业认证了.个人申请就可以了..然后再找第三方手机号码认证...
    既然是注册用户机制.没必要那么省..短信验证码都不愿意出.1 万次 400 元..有 10 万用户能吹上天了
        26
    leopku   51 天前 via iPhone   ♥ 1
    @lzjun shi 一样的体验,几乎所有公众号都变成营销号,还不垃圾?!
        27
    Tink   51 天前 via iPhone
    有个问题就是不用微信的人没法注册了
        28
    ryanlid   51 天前
    > “为了防止用户多次注册”

    用户注册多个微信,就可以多次注册了。
        29
    janus77   51 天前
    openid 好像不唯一我记得……以前接分享的时候注意到的
        30
    lzjun   51 天前 via Android
    @janus77 每个用户在某个公众号下面 是唯一的
        31
    lzjun   51 天前 via Android
    @ryanlid 这种方式并没有问题啊,我只防止机器无限制的注册就行
        32
    lzjun   51 天前 via Android
    @Tink 这个反而不担心,10 亿日活的微信不用微信的人极少
        33
    lzjun   51 天前 via Android
    @daomen 他们直接支持微信登录,这种更方便了,但是需要企业认证
        34
    t94P9   51 天前 via iPhone
    好恶心…短信实名已经够恶心了 还来个微信
        35
    suom   51 天前 via Android
    公众号被举报封号就惨了…
        36
    tiaod   51 天前
    那希望你永远不要进入与腾讯构成直接竞争的行业吧,例如即时通讯。
        37
    lzjun   50 天前
    @suom 又不干坏事,为啥会被封号
        38
    shuizhengqi   50 天前
    @Jirajine 没错,我国是有短信认证,请问你是哪国?
        39
    Jirajine   50 天前 via Android
    @shuizhengqi 你国意在与或是集体荣誉感爆棚,或是吃人的既得利益者划清界限,普天之下,莫非王土,既非我土,何谓我国?
    至于我是哪国?不知道。反正不是你国。
        40
    LicV587   50 天前
    你这样还不如小程序生成带参数二维码,直接微信扫码,跳转到小程序,用户授权登录
        41
    leopku   50 天前 via iPhone
    @lzjun sever 酱干啥坏事了,你来说说?!
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2061 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 05:19 · PVG 13:19 · LAX 22:19 · JFK 01:19
    ♥ Do have faith in what you're doing.