php实现微信公众号扫码登录
服务器配置
登录微信公众平台,左侧点开设置与开发 -> 基本设置,如图所示:
设置好按照指示设置好配置,服务端代码如下:
<?php // 微信token认证 $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $echostr = $_GET["echostr"]; // 你在微信公众号后台的设置的Token $token = "yourtoken";// 1)将token、timestamp、nonce三个参数进行字典序排序 $tmpArr = array($nonce, $token, $timestamp); sort($tmpArr, SORT_STRING);// 2)将三个参数字符串拼接成一个字符串进行sha1加密 $str = implode($tmpArr); $sign = sha1($str);// 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 if ($sign == $signature) { echo $echostr; }
token必须和微信公众号配置中保持一致,点击“提交”按钮,看是否成功
生成微信登录二维码
1. 先获取access_token
其中 APPID 和 APPSECRET 分别是在微信开放平台创建应用后获取的应用 ID 和应用密钥。将该 URL 地址进行 url encode,然后发送 GET 请求即可获取 access_token。
2. 获取登录二维码的 ticket
使用上传图片素材接口(media/upload)获取二维码 Ticket ,该接口的请求 URL 地址为:
POST https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=image
3. 将获取到的 Ticket 通过以下 URL 地址生成登录二维码:
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
其中 TICKET 是在上一步取到的 Ticket。将以上 URL 地址拼接起来,即可生成二维码,二维码有效期为 5 分钟。需要注意二维码中必须携带正确的参数,以保证登录成功。