免登接口
<h4>免登接口(h5商城链接)</h4>
<p><strong>1.目标是生成出形如这样的免登陆URL:</strong>
<a href="https://gmall.m.qq.com/homepage?appid=7800111&sign=dc8f8c09ef6c907e067e3f9c4e4ab695&_timestamp=1582864983000&account_id=testaccountid333&device_id=testdeviceid86&login_key=testkey123">https://gmall.m.qq.com/homepage?appid=7800111&sign=dc8f8c09ef6c907e067e3f9c4e4ab695&_timestamp=1582864983000&account_id=testaccountid333&device_id=testdeviceid86&login_key=testkey123</a></p>
<p><strong>请求URL:</strong> </p>
<ul>
<li><code>https://gmall.m.qq.com/homepage</code></li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>GET </li>
</ul>
<p><strong>参数:</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;">appid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td>珊瑚产品id, 由珊瑚侧提供</td>
</tr>
<tr>
<td style="text-align: left;">_timestamp</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">long</td>
<td>时间戳,毫秒 ,用于参与签名计算</td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>MD5签名32位小写</td>
</tr>
<tr>
<td style="text-align: left;">account_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>用户账号id,接入方生成 ,不能包含会被encode的字符(比如“=”、“+”),建议由数字、字母或者“-”组成。</td>
</tr>
<tr>
<td style="text-align: left;">login_key</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>用户登录票据,接入方生成,用于接入方校验用户的登录合法性,不能包含会被encode的字符(比如“=”、“+”),建议由数字、字母或者“-”组成。该票据会和account_id一起通过登录态回调接口透传到接入方进行校验。长度没有限制。</td>
</tr>
<tr>
<td style="text-align: left;">device_id</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>设备id(imei),确实没有imei可以用其他值替代</td>
</tr>
</tbody>
</table>
<p><strong>2.参数拆解来看。 (更具体请看签名规则)</strong></p>
<ul>
<li>Appid是我方提供的</li>
<li>_timestamp是用来加密的当前时间戳</li>
<li>accountid和device_id和loginKey由客户端传上来</li>
<li>Sign的组合方法是 md5(<code>${reqStr}${key}${timestamp}</code>), 比如现在参数只有accountid:1234和deviceID:5678, 特殊字符需要encode, timestmap=1563355405300,secret是2223。那sign = md5(‘account_id=1234;device_id=5678;22231563355405300’)</li>
<li>login_key是透传过来的,无须参与md5签名</li>
</ul>
<p><strong>3.签名方式</strong>
参与签名的字段包括地址请求参数中除<code>appid</code>、<code>login_key</code>和<code>sign</code>的所有请求参数,以及<code>appsecret</code>(appid对应分配的appsecret)。</p>
<p>步骤1.按照以下方式构造验签名串。签名串由三部分组成,每部分直接拼接,不需要分隔符,或者认为分隔符为空字符串''.</p>
<p>第一部分为请求参数中除<code>appid</code>、<code>login_key</code>、<code>sign</code>以及<code>_timestamp</code>参数的其他参数,对这些参数按照请求时的顺序进行排序后,每个参数使用键值对的格式(key1=value1)以英文分号<code>;</code>作为分隔符拼接成第一部分的内容。示例:如果请求参数为<code>appid=1&amp;_timestamp=1682323886173&amp;account_id=id1&amp;login_key=login-key1&amp;device_id=device-id1</code>,则第一部分的内容为<code>account_id=id1;device_id=device-id1</code></p>
<p>第二部分为<code>appsecret</code>的值,<code>appsecret</code>的值直接作为第二部分的内容。示例: 如果<code>appsecret</code>为<code>secretabc</code>,则第二部分的内容为<code>secretabc</code></p>
<p>第三部分为<code>_timestamp</code>参数的值,<code>_timestamp</code>的值直接作为第三部分的内容。示例: 如果<code>_timestamp</code>为<code>1682324085404</code>,则第三部分的内容为<code>1682324085404</code></p>
<p>将第一部分、第二部分和第三部分的内容拼接后构成验签名串,结合先前示例,结合后验签名串的示例为<code>account_id=id1;device_id=device-id1;secretabc1682324085404</code></p>
<p>步骤2. 对构造好的验签名串字进行md5签名,得到sign: <code>a82d566f7b6682e7ebe859a91a301e23</code></p>
<p>步骤3. 将sign添加到请求参数中,则请求地址为:<code>https://gmall.m.qq.com/homepage?appid=1&amp;_timestamp=1682323886173&amp;account_id=id1&amp;login_key=login-key1&amp;device_id=device-id1&amp;sign=a82d566f7b6682e7ebe859a91a301e23</code></p>
<p><strong>5.注意事项</strong></p>
<ul>
<li>不刷新页面15min之后过期则为无效访问,需刷新</li>
<li>
<p>测试环境域名是https://testgmall.m.qq.com 正式环境域名是https://gmall.m.qq.com</p>
</li>
<li>如果需要游客访问,<strong>请不传account_id和loginkey,</strong>且加多一个参数not_login=true。具体链接如下所示:
<a href="https://testgmall.m.qq.com/homepage?appid=7990&sign=e6700ecb748863c2af5ff2b68a9493d8&device_id=866615038238596&_timestamp=1563419542698&not_login=true">https://testgmall.m.qq.com/homepage?appid=7990&sign=e6700ecb748863c2af5ff2b68a9493d8&device_id=866615038238596&_timestamp=1563419542698&not_login=true</a></li>
</ul>