Scroll to top
© 2018, Made by Fan at New Haven

本来这是用来作为ISSUU Downloader人机验证的一个方法,可能很多朋友都需要有这样一个方法来进行人机验证,或者扫码登陆或者进行其他操作,所以就封装了一个API,希望帮到有需要的朋友。

这个API的具体逻辑就是,网站在登陆页面上显示内容为A链接的二维码,引导用户使用微信扫描该二维码。A链接的格式应当为:http://wenfan.cn/wechat/api.php?token=xxxxxx&key=xxxxxx(&bg=00adee 登录页面背景颜色值,可选)。这个链接包括 token和key两个变量,前者用于识别用户是否已经扫描该页面,后者用于双向验证交换信息;

用户如果使用其他工具打开这个链接,是不会有任何反应的,只有在微信中扫描才会有所反应;

用户在微信中扫描以后,首先会验证APIKEY是否存在,如果存在则获取callback回调地址。然后会继续向微信平台请求得到用户的唯一openid(程序会对openid进行一次加密,防止有人通过其他手段获得微信用户原始openid后进行攻击,确保得到的openid的绝对唯一性),得到openid以后,程序将token和openid以及APIKEY、secret四个变量通过POST方式传递给callback回调地址;

callback回调地址收到上述参数后,对APIKEY和secret进行验证(防止有人直接向callback地址进行POST),然后将token和openid写入数据库;

checkstatus.php?token=xxxxxx 是用来判断该token是否已经和openid组对写入了数据库中,如果数据库中存在了这个token,并且配对有一个openid,则说明用户已经扫码;

前端index.php通过轮询checkstatus.php,来获取数据库中是否存在这个token的状态,每隔3秒轮询一次,如果发现该token已存在于数据库中,则开始执行跳转(或者其他动作,比如写入session等等),至此,整个流程已经完成。

 

具体部署方法如下:

1、在本站申请一个API KEY:https://wenfan.cn/wechat/user,请尽量勿使用QQ邮箱注册,可能收不到验证链接;

2、点击邮件验证链接以后,登陆后台可以得到一个API KEY;

3、下载DEMO.ZIP [https://wenfan.cn/wechat/demo.zip];

4、修改config.php里面的数据库连接信息;

5、在数据库里建立一个名称为“wechat”的表,必须至少包含两个字段:token 和 user。前者用来记录临时token,后者用来记录微信用户唯一id;

6、修改callback.php和index.php里对应的API KEY值以及secret值,改成第一步自己得到的API KEY和secret;

7、将文件上传至服务器,在第一步的API KEY信息后台,将callback.php的地址填入。

8、[可选]:根据自己的需求,优化二维码样式,及设定扫描成功后的动作代码;还可以在index.php里面设置登录页面背景颜色如$bg="#00adee"。

 

获取到的微信用户id为唯一id,所以该扫描登陆具备较强的唯一性,可以用来注册或者登陆,或者人机验证(代替验证码)。

[点击查看LIVE DEMO]

wechat_login_h

issuu_03

wechat_login

wechatapi

Technology

API for WeChat QRcode Login

Post a Comment

Your email address will not be published. Required fields are marked *