>백엔드 개발 >PHP 튜토리얼 >微信开发 微信扫描登陆

微信开发 微信扫描登陆

WBOY
WBOY원래의
2016-06-06 20:38:421599검색

网站中集成微信扫描登陆 直接使用微信账号登陆 减去注册 登陆麻烦只需要微信扫描二维码登陆,有哪位小伙伴 遇到这样类似的需要 类似的场景吗??

给一个网站的例子链接(非广告推广..)微信扫码登陆

回复内容:

网站中集成微信扫描登陆 直接使用微信账号登陆 减去注册 登陆麻烦只需要微信扫描二维码登陆,有哪位小伙伴 遇到这样类似的需要 类似的场景吗??

给一个网站的例子链接(非广告推广..)微信扫码登陆

我已经做了一个简单的封装的api。通过微信的网页授权获取用户信息,来实现登录、验证、注册等功能。但是这个网页授权获取用户基本信息,需要认证过的服务号才能具备此功能,手中刚好有一个,就用来做了一个API,可以供大家一起使用。

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

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

用户在微信中扫描以后,首先会验证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:Wechat Scan Login API,请尽量勿使用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的地址填入。
[可选]:根据自己的需求,优化二维码样式,及设定扫描成功后的动作代码。获取到的微信用户id为唯一id,所以该扫描登陆具备较强的唯一性,可以用来注册或者登陆,或者人机验证(代替验证码)。

[点击查看LIVE DEMO]

好吧 又是自问自答 发布问题后 问了一下 在腾讯工作的朋友.....然后得到了 如下链接

微信文档 无力吐槽...

实例

这个实现现在很多网站都加了……

如果有一个认证了的服务号可以自己做的。

生成带参数二维码。

1、在微信开放平台注册(open.weixin.qq.com)
2、申请开发者认证
3、认证后,即可使用微信登录功能,支持app web

去微信开入平台注册申请开发者,完了添加应用,添加完之后设置 callback ,扫码之后会跳转到你的 callback (并带上 code),通过 code 去换取 openid 和 accessToken。

在本站申请一个API KEY:Wechat Scan Login API
这个 KEY 怎么得到?

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.