# wx_auth **Repository Path**: isakura/wx_auth ## Basic Information - **Project Name**: wx_auth - **Description**: 微信网页授权中心 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2017-04-19 - **Last Updated**: 2024-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 微信网页授权中心 「微信网页授权中心」(后统一称本系统)是一个授权分发中心系统。受限于目前微信服务号的网页授权域名只能绑定一个,当你只有一个认证服务号却有多个域名下的系统希望可以获得微信网页授权时;或者是你没有认证服务号,但是你的基友有。或许你可以考虑一下使用我的授权中心。 ## 说明 本系统是基于优雅且高效的 Lumen 框架实现的。通过 白名单列表 + 访问签名验证 的方式来保证调用的合法性。微信授权成功后会下发一个访问令牌,接入方拿到令牌后向授权中心索要令牌对应微信用户的数据信息 ## 开发 项目拉取后,首先跟正常 Lumen 代码处理一样,你需要先 `composer update` 将 Lumen 的核心文件准备好。接着你需要将 `.env.example` 文件拷贝一份到 `.env` 根据你的环境情况配置一下里面的内容。 在 `/database/` 下有 `wx_auth.sql` 数据库文件,你可以利用它创建数据库,它将被用于存放白名单的相关数据。目前没有提供接口去新增白名单数据,你可以自己动手插入白名单数据。 ## 发起授权 假设你的授权中心地址为:https://wxauth.example.com 接入授权中心你需要在授权中心的白名单中。你需要跳转页面的形式去发起授权申请,授权的跳转地址为 https://wxauth.example.com/auth 在向授权中心发起授权申请的时候,你需要提供以下几个参数 `system`,`timestamp`,`nonce`,`signature`,`redirect_url` 他们分别是 - `system`: 系统标识「与授权中心白名单存储数据一致」 - `timestamp`: 时间戳 - `nonce`: 随机字符串 - `signature`: 签名密文「加密规则见下文」 - `redirect_url`: 授权成功后的回调地址 授权成功后,授权中心将在 `redirect_url` 的后面带上拥有授权用户信息访问权限的 `access_token` 访问令牌,你需要使用拿到的访问令牌去向授权中心索要刚授权成功的用户数据。 获取用户授权数据的接口地址为 https://wxauth.example.com/userinfo 你需要用 POST 的方式去调用对应的接口,该接口与授权申请一样需要进行签名验证,你需要在 URI 带上对应的签名参数。另外你应该在请求体里面带上 `access_token` 访问令牌。签名通过且令牌有效的情况下你可以得到用户的授权数据信息。 这里对返回数据做了筛选,授权中心默认仅返回 `openid`,`nickname`,`sex`,`province`,`city`,`country`,`headimgurl` 的数据 ## 签名加密 签名需要用到 `system`,`token`,`timestamp`,`nonce` 四个参数,其中 `token` 需要与授权中心白名单中的设置的 `token` 一致。 对四个参数进行字典序排序后组合成字符串,然后对字符串进行 `sha1` 加密生成 `signature` ## 联系 Email: i@joosie.cn