小程序Code换取用户信息
<h5>接口描述</h5>
<ul>
<li>小程序wx.login获取到code之后,通过code换取本系统用户信息</li>
</ul>
<h5>请求URL</h5>
<ul>
<li><code>/api/auth/wx/code</code></li>
</ul>
<h5>请求方式</h5>
<ul>
<li>POST</li>
</ul>
<h5>请求参数</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">appid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>小程序appid</td>
</tr>
<tr>
<td style="text-align: left;">secret</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>小程序secret</td>
</tr>
<tr>
<td style="text-align: left;">js_code</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>小程序wx.login返回的code</td>
</tr>
</tbody>
</table>
<blockquote>
<p>注意:因为此Api要为多个小程序提供服务(多人在学习使用), 所以增加了appid, secret 两个参数, 在真实的项目中,appid, secret这两个参数应该配置在后端服务器中,并且一定要保证secret不被泄露</p>
</blockquote>
<h5>返回参数</h5>
<p><strong>access_token</strong></p>
<p>JWT Token 用于请求需要授权的API</p>
<p><strong>user</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必含</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td>主键</td>
</tr>
<tr>
<td style="text-align: left;">name</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>昵称</td>
</tr>
<tr>
<td style="text-align: left;">email</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>邮箱</td>
</tr>
<tr>
<td style="text-align: left;">phone</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>手机号</td>
</tr>
<tr>
<td style="text-align: left;">avatar</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>头像</td>
</tr>
<tr>
<td style="text-align: left;">avatar_url</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>头像地址</td>
</tr>
<tr>
<td style="text-align: left;">is_locked</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td>是否锁定: 0正常 1锁定</td>
</tr>
<tr>
<td style="text-align: left;">created_at</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">timestamp</td>
<td>创建时间</td>
</tr>
<tr>
<td style="text-align: left;">updated_at</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">timestamp</td>
<td>更新时间</td>
</tr>
</tbody>
</table>
<h5>返回示例</h5>
<ul>
<li>状态码 200 请求成功</li>
</ul>
<pre><code>{
"openid": "xxxxxxxxxxxxxxxxxxxxx",
"access_token": ""
"user": "",
}</code></pre>
<blockquote>
<p>已从微信服务器获取到openid,但是通过openid查询本系统用户,用户不存在</p>
</blockquote>
<ul>
<li>状态码 200 请求成功</li>
</ul>
<pre><code>{
"openid": "xxxxxxxxxxxxxxxxxxxxx",
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9ib29rc2hvcGFwaS5tYW1wXC9hcGlcL2F1dGhcL3d4XC9jb2RlIiwiaWF0IjoxNjIwMzcwNTA3LCJleHAiOjE2MjA3MzA1MDcsIm5iZiI6MTYyMDM3MDUwNywianRpIjoiRGd1RldvTUQ4YTlsVTR1QyIsInN1YiI6MSwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.ej4pcMNwljxordjmLVtGlnfUCSSHC5RwBVWV15Tafzc",
"user": {
"id": 1,
"name": "超级管理员",
"email": "super@a.com",
"phone": null,
"avatar": "https://laravel-book-shop.oss-cn-beijing.aliyuncs.com/default/3.JPG",
"unionid": null,
"openid": "oMMJ95AU0mV-PJCEzGl-VUUd_xq4",
"is_locked": 0,
"email_verified_at": null,
"created_at": "2021-01-04T08:29:43.000000Z",
"updated_at": "2021-03-17T06:21:44.000000Z",
"avatar_url": "https://laravel-book-shop.oss-cn-beijing.aliyuncs.com/default/3.JPG"
}
}</code></pre>
<ul>
<li>状态码 400 请求异常</li>
</ul>
<pre><code>{
"message": "code been used, hints: [ req_id: ahdcdiore-esUcZa ]",
"status_code": 400,
}</code></pre>
<blockquote>
<p>此错误为微信服务器返回的错误异常, 比如code已被使用。</p>
</blockquote>
<ul>
<li>状态码 422 请求参数错误</li>
</ul>
<pre><code>{
"message": "The given data was invalid.",
"errors": {
"appid": [
"appid 不能为空"
],
"secret": [
"secret 不能为空"
],
"js_code": [
"js_code 不能为空"
]
},
}</code></pre>