H5网页授权接入指南
<p>[TOC]</p>
<h2>API 描述</h2>
<h3>获取唤起三方APP的URL</h3>
<p>提供通过第三方平台授权H5登录能力,目前支持 <code>微信</code>、<code>QQ</code>和 <code>微博</code> 网页授权。<strong>该接口必须服务端调用</strong>。</p>
<p>访问域名:<a href="http://pub-gw.uu.cc/public-gateway">http://pub-gw.uu.cc/public-gateway</a></p>
<p><strong>请求url:</strong> <code>/ms-player/sdk_/h5/pre/login</code>
<strong>请求方式:</strong> GET
<strong>请求参数:</strong></p>
<table>
<thead>
<tr>
<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;">long</td>
<td>应用ID,在乐逗创建的应用ID</td>
</tr>
<tr>
<td style="text-align: left;">loginType</td>
<td style="text-align: left;">String</td>
<td>登录类型 Hqq_H5,Hwx_H5,WEIBO_H5</td>
</tr>
<tr>
<td style="text-align: left;">redirectUri</td>
<td style="text-align: left;">String</td>
<td>成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心。注意需要将url进行URLEncode</td>
</tr>
<tr>
<td style="text-align: left;">ldstate</td>
<td style="text-align: left;">String</td>
<td>重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节</td>
</tr>
<tr>
<td style="text-align: left;">scope</td>
<td style="text-align: left;">String</td>
<td>非必填,可一次申请多个scope权限,用逗号分隔。对应参数值可参照对应第三方开发平台地址</td>
</tr>
</tbody>
</table>
<p><strong>备注:对应scope参数值查阅第三方的文档如下</strong></p>
<ul>
<li>QQ <a href="https://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token">https://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token</a></li>
<li>微博 <a href="https://open.weibo.com/wiki/Scope">https://open.weibo.com/wiki/Scope</a></li>
<li>微信 <a href="https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#1">https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#1</a></li>
</ul>
<p><strong>返回示例</strong></p>
<ul>
<li>
<p>说明:授权登录发起请求成功后,回调返回到H5页面</p>
</li>
<li>
<p>回调地址redirectUri:在乐逗业务控制台填写的应用回调地址</p>
</li>
<li>服务端回调地址返回参数示例:</li>
</ul>
<pre><code>redirectUri?accessToken=XXX&tokenType=XXX&refreshToken&expiresIn=XXX&ldstate=XXX</code></pre>
<p><strong>参数说明:</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">accessToken</td>
<td style="text-align: left;">long</td>
<td>Token 凭证</td>
</tr>
<tr>
<td style="text-align: left;">tokenType</td>
<td style="text-align: left;">String</td>
<td>Token 类型</td>
</tr>
<tr>
<td style="text-align: left;">refreshToken</td>
<td style="text-align: left;">String</td>
<td>刷新token</td>
</tr>
<tr>
<td style="text-align: left;">expiresIn</td>
<td style="text-align: left;">String</td>
<td>Token有效期,单位:秒</td>
</tr>
<tr>
<td style="text-align: left;">ldstate</td>
<td style="text-align: left;">String</td>
<td>随机字符串,a-zA-Z0-9的参数值,最多128字节</td>
</tr>
</tbody>
</table>
<h3>获取用户信息</h3>
<p>该接口可以通过 <code>accessToken</code> 获取用户信息详情。该接口必须服务端调用。</p>
<p>访问域名:<a href="http://pub-gw.uu.cc/public-gateway">http://pub-gw.uu.cc/public-gateway</a>
<strong>请求url:</strong> <code>/ms-player/sdk_/player/post/getAccountDetailAndSessionInfo</code>
<strong>请求方式:</strong>GET
请求参数:无</p>
<ul>
<li>接口说明:此接口为登录后才能的访问的接口,用户访问令牌在请求头中传入
签名规则请参考:请参考 <a href="https://www.showdoc.cc/mssdk?page_id=3123995334349155">外部网关签名规则</a> 文档。
返回参数:</li>
</ul>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>错误码,当且仅当为0时,请求成功</td>
<td>int</td>
</tr>
<tr>
<td>desc</td>
<td>描述</td>
<td>String</td>
</tr>
<tr>
<td>result</td>
<td>结果</td>
<td>Object</td>
</tr>
<tr>
<td>encrypt</td>
<td>加密类型,RSA</td>
<td>String</td>
</tr>
<tr>
<td>data</td>
<td>返回数据,加密</td>
<td>String</td>
</tr>
</tbody>
</table>
<p>示例:</p>
<pre><code class="language-json">{
"code": 0,
"desc": "成功",
"result": {
"encrypt": "RSA",
"data": "YHUT12aicG7hRUTLZAZimRA/iypkOGdgiL1OfVMgoUnhGz1miXaAfeSf1lEDt2Xw6LnLeI+fWBXJrynY0i1XSeK5IrbrOtXIDBfXxSwAvTlVmGWU9TUzt/OME4NdJYxsfcFA/nCssHSNz6H60nk31MRhTe77zsM3oSgFJhTWtvZfBBqQYaM4qkOCkUk9JcG7ulsSuTOFPvDI0wIw79Y973CZkPTTWcvkUG6evY9FeH8tmF7nr5jNkIK1F/JbTBMI0w3jHKueC6gauKcOJqMoFQGfE/BUk4CSmM2LjMSvZg7XfqyVvd+CzY2yjyUU8Cl3Sko6s3dIDIL/V7zy4LwDf3GCQPuTi1+l8ThPcLToo9QfvrNOPodfxMDAQxMI515alXqOBM6WAZTQWA7gyVlzbSBz8dJlu+VP7R54gUrOqBDwEH4P553V4cV9FwbjJq6ViA0+itsvZ5PkxhJLcYWOEzN8VT1XrCjZxWl44bVGozXqHJqveOAij0R2oSYXx5RMJDEjmKMzdHanjUatcJxrOJun2SVmYqzfSjVwk97a/MqKhrBsqtVYJPhsI1A0lK1R//DkbzYmlSo/bITw3kmnuIByTtMqZFOlqRRS7qC7G77W0+m0qpNaEW8WVYjlFnjig/A5KdKuPUKmVzQGZx0Q7BD9PnSoSnpf4EvCnRAaJ5xYgEZ5OzD5rji7x+ZmbcrxV6MwdPIWiW7NblQ9ifhT7VP0Ba+UAf+P/18Y63xTdIrwLmOXbYX62Wvf6yas7giDW8MmzbpScNYXpe0cOjidyM4yGgXvUVqiGe/R9nWvEZR+1WGMzU0yT9DcIJW4hta1+TkLeoC80031qegoRAnxSw=="
}
}</code></pre>
<p>此接口返回的数据是根据RSA加密的(加密秘钥为当前接入应用的私钥,解密时请使用公钥),解密之后的数据如下:</p>
<p><strong>account</strong></p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
</tr>
</thead>
<tbody>
<tr>
<td>userId</td>
<td>用户ID</td>
<td>Long</td>
</tr>
<tr>
<td>nickName</td>
<td>昵称</td>
<td>String</td>
</tr>
<tr>
<td>realName</td>
<td>真实姓名,已经脱敏</td>
<td>String</td>
</tr>
<tr>
<td>idCard</td>
<td>身份证号,已经脱敏</td>
<td>String</td>
</tr>
<tr>
<td>email</td>
<td>电子邮件</td>
<td>String</td>
</tr>
<tr>
<td>gender</td>
<td>性别:m男、f女、n未知</td>
<td>String</td>
</tr>
<tr>
<td>avatarUrl</td>
<td>头像</td>
<td>String</td>
</tr>
<tr>
<td>createTime</td>
<td>用户创建时间,时间戳</td>
<td>int</td>
</tr>
<tr>
<td>updateTime</td>
<td>用户更新时间,时间戳</td>
<td>int</td>
</tr>
<tr>
<td>hasPassword</td>
<td>是否设置过密码,0:没有,1:有</td>
<td>int</td>
</tr>
<tr>
<td>phone</td>
<td>手机号码</td>
<td>String</td>
</tr>
<tr>
<td>birthday</td>
<td>生日,如2001-01-02</td>
<td>String</td>
</tr>
<tr>
<td>isVisitor</td>
<td>是否游客 0:不是 1:是</td>
<td>int</td>
</tr>
<tr>
<td>city</td>
<td>市</td>
<td>String</td>
</tr>
<tr>
<td>address</td>
<td>住址</td>
<td>String</td>
</tr>
<tr>
<td>country</td>
<td>国家</td>
<td>String</td>
</tr>
<tr>
<td>province</td>
<td>省</td>
<td>String</td>
</tr>
</tbody>
</table>
<p><strong>player</strong></p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
</tr>
</thead>
<tbody>
<tr>
<td>playerId</td>
<td>玩家ID</td>
<td>Long</td>
</tr>
<tr>
<td>nickname</td>
<td>昵称</td>
<td>String</td>
</tr>
<tr>
<td>image</td>
<td>头像</td>
<td>String</td>
</tr>
<tr>
<td>loginTime</td>
<td>登录时间,时间戳</td>
<td>int</td>
</tr>
<tr>
<td>loginType</td>
<td>登录类型</td>
<td>String</td>
</tr>
<tr>
<td>bindType</td>
<td>登录过的类型</td>
<td>List<String></td>
</tr>
<tr>
<td>phone</td>
<td>手机</td>
<td>String</td>
</tr>
<tr>
<td>isNewComer</td>
<td>是否新玩家 0:旧玩家,1:新玩家</td>
<td>int</td>
</tr>
<tr>
<td>channelId</td>
<td>渠道ID</td>
<td>String</td>
</tr>
<tr>
<td>openId</td>
<td>三方登录的唯一标识</td>
<td>String</td>
</tr>
<tr>
<td>unionid</td>
<td>微信登录的唯一标识</td>
<td>String</td>
</tr>
<tr>
<td>realName</td>
<td>真实姓名,已经脱敏</td>
<td>String</td>
</tr>
<tr>
<td>idCard</td>
<td>身份证号,已经脱敏</td>
<td>String</td>
</tr>
<tr>
<td>currentLoginType</td>
<td>当前登录类型</td>
<td>String</td>
</tr>
<tr>
<td>extend</td>
<td>扩展信息</td>
<td>Map</td>
</tr>
</tbody>
</table>
<p><strong>game</strong></p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>游戏ID</td>
<td>Long</td>
</tr>
<tr>
<td>name</td>
<td>游戏名称</td>
<td>String</td>
</tr>
</tbody>
</table>
<p><strong>session</strong></p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
</tr>
</thead>
<tbody>
<tr>
<td>openId</td>
<td>用户唯一标识</td>
<td>String</td>
</tr>
<tr>
<td>sessionId</td>
<td></td>
<td>String</td>
</tr>
</tbody>
</table>
<p>示例:</p>
<pre><code class="language-json">{
"account": {
"userId": 3800790992,
"nickName": "杨辉",
"realName": "杨*",
"idCard": "3*************2218",
"gender": "m",
"avatarUrl": "http://upload-1254071568.cos.ap-guangzhou.myqcloud.com/902292/20190726164540026/fKfNO4pvNv7IAbiMtLKN.jpg",
"createTime": 1561535067,
"updateTime": 1570763515,
"hasPassword": 1,
"phone": "13725530664",
"birthday": "2016-09-16",
"isVisitor": 0,
"city": "深圳",
"country": "中国",
"province": "广东"
},
"player": {
"playerId": 3800791067,
"loginTime": 1571045891,
"loginType": "Hphone",
"bindType": [
"Huser",
"Hphone"
],
"phone": "13725530664",
"isNewComer": 0,
"openId": "3800790992",
"currentLoginType": "Hcode",
"extend": {}
},
"game": {
"id": 10255,
"name": "杨辉测试APP"
},
"session": {
"openId": "a311619f80f91c61a1d5b6c3e38fc8bc",
"sessionId": "b28f0c754cdab4f91a92e77db22a4d76"
}
}</code></pre>
<h2>后台配置说明</h2>
<p><strong>微服务控制台</strong></p>
<blockquote>
<p>需要登录微服务控制台,在登录应用服务,服务参数项增加对应的第三方登录配置信息。</p>
</blockquote>
<p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/08898248d01d297675a8a6bb5d4cef1a?showdoc=.jpg" alt="" /></p>
<p><strong>业务控制台</strong></p>
<blockquote>
<p>登录业务控制台,选择准备接入H5授权登录的应用,在登录服务模块下,新增H5授权登录方式,填写配置参数。</p>
</blockquote>
<p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/7345353f6e3b369a65700548a16da613?showdoc=.jpg" alt="" /></p>