04 国密无感登录

国密无感登录集成文档说明


Android SDK集成文档

<p>[TOC]</p> <h1>概述</h1> <p>本文是密认宝无感登录SDK_Android端接入文档,用于指导SDK的集成使用。在对接之前您需要花5-10分钟阅读新手教程和以下内容。</p> <h1>前置条件</h1> <ul> <li>无感登录SDK支持minSdkVersion 16及以上版本</li> </ul> <h1>开发环境搭建</h1> <h2>本地集成</h2> <ul> <li>将SDK中libs目录下的aar包拷贝到您工程的libs目录下,如没有该目录需新建。</li> <li>在build文件的dependencies中添加aar包依赖 <pre><code>repositories { flatDir { dirs '../app/libs' } } implementation (name:'authlibrary',ext:'aar')</code></pre> <p>&lt;br/&gt;</p> <h2>权限配置</h2> <pre><code class="language-java">您需要在 AndroidMainfest.xml 文件添加: &amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot; /&amp;gt; &amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_WIFI_STATE&amp;quot; /&amp;gt;</code></pre></li> </ul> <table> <thead> <tr> <th style="text-align: left;">权限名称</th> <th>权限说明</th> <th>使用说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">INTERNET</td> <td>允许应用程序联网</td> <td>用于访问网关和认证服务器</td> </tr> <tr> <td style="text-align: left;">ACCESS_WIFI_STATE</td> <td>允许访问WiFi网络状态信息</td> <td>允许程序访问WiFi网络状态信息</td> </tr> </tbody> </table> <h1>SDK的使用</h1> <p>通过上面的几个步骤,工程就配置完成了,接下来就可以在工程中使用密认宝SDK进行开发了。</p> <h2>混淆配置</h2> <pre><code class="language-java">-keep class com.safevast.uid.** {*;}</code></pre> <h2>初始化</h2> <p>传入appId进行初始化,初始化成功之后即可使用SDK中的方法。 方法原型 AuthManager.getInstance().initAuth(context, appId, initListener);</p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">context</td> <td>Context</td> <td>传ApplicationContext对象</td> </tr> <tr> <td style="text-align: left;">appId</td> <td>String</td> <td>应用appId</td> </tr> <tr> <td style="text-align: left;">initListener</td> <td>InitListener</td> <td>初始化回调监听</td> </tr> </tbody> </table> <p>示例代码</p> <pre><code class="language-java">AuthManager.getInstance().initAuth(getApplicationContext(), BuildConfig.APP_ID, new InitListener() { @Override public void initResult(int code, String result) { if(code == 1000){ //初始化成功 } } });</code></pre> <p>initResult(int code, String result)返回参数code和result,含义如下:</p> <table> <thead> <tr> <th style="text-align: left;">字段</th> <th>类型</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td>int</td> <td>code为1000:成功;其他:失败</td> </tr> <tr> <td style="text-align: left;">result</td> <td>String</td> <td>初始化结果描述</td> </tr> </tbody> </table> <h2>获取密钥因子</h2> <p>获取密钥因子:无感登录失败后需要通过其他方式登录,同步获取密钥因子用于加密用户ID激活密码模块。 示例代码</p> <pre><code class="language-java">String session = AuthManager.getInstance().getSessionSon(context);</code></pre> <p>getSessionSon(context)返回参数session,含义如下:</p> <table> <thead> <tr> <th style="text-align: left;">字段</th> <th>类型</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">session</td> <td>String</td> <td>密钥因子</td> </tr> </tbody> </table> <h2>激活密码模块</h2> <p>传入SM4加密的用户ID、用户名称、头像路径、自定义参数去激活密码模块 请确认初始化成功后再调用此方法。 示例代码</p> <pre><code class="language-java">AuthManager.getInstance().quietlyActivation(SM4-USER-ID, &amp;quot;USER-NAME&amp;quot;, &amp;quot;PHOTO-PATH&amp;quot;, AUTO-PARAM, new QuietlyActivationListener() { @Override public void quietlyActivationResult(int code, String result) { if(code == 1000){ //密码模块已激活 } } });</code></pre> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">SM4-USER-ID</td> <td>String</td> <td>SM4加密的用户ID</td> </tr> <tr> <td style="text-align: left;">userName</td> <td>String</td> <td>用户名称</td> </tr> <tr> <td style="text-align: left;">photoPath</td> <td>String</td> <td>头像路径</td> </tr> <tr> <td style="text-align: left;">autoParam</td> <td>Object</td> <td>自定义参数</td> </tr> </tbody> </table> <p>SM4加密用户ID示例</p> <pre><code class="language-java">//获取密钥因子 String sessionSon = AuthManager.getInstance().getSessionSon(context); //sKey = 密钥因子+appKey String sKey = AuthManager.getInstance().getMd5_16(sessionSon + appKey); //加密USER_ID String SM4-USER-ID = AuthManager.getInstance().sm4EncryptMsg(USER_ID,sKey.getBytes());</code></pre> <p>quietlyActivationResult(int code, String result)返回参数code和result,含义如下:</p> <table> <thead> <tr> <th style="text-align: left;">字段</th> <th>类型</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td>int</td> <td>code为1000:成功;其他:失败</td> </tr> <tr> <td style="text-align: left;">result</td> <td>String</td> <td>激活密码模块结果描述</td> </tr> </tbody> </table> <h2>无感登录</h2> <p>用户打开APP时,调用无感登录获取uToken、userName、photoPath、自定义参数、signature、apiVersion。 注意:正常情况下无感登录成功可以直接进入APP,如果是用户主动退出账号,无感登录成功需要显示用户头像、昵称提示用户确认。 示例代码</p> <pre><code class="language-java">AuthManager.getInstance().quietlyAuth(new QuietlyListener() { @Override public void quietlyResult(int code, String result) { if(code == 1000){ //无感认证成功 try { JSONObject json = new JSONObject(result); //uToken String uToken = json.optString(&amp;quot;uToken&amp;quot;); //userName String userName = json.optString(&amp;quot;userName&amp;quot;); //photoPath String photoPath = json.optString(&amp;quot;photoPath&amp;quot;); //自定义参数 String autoParam = json.optString(&amp;quot;autoParam&amp;quot;); //签名信息 String signature = json.optString(&amp;quot;signature&amp;quot;); //apiVersion String apiVersion = json.optString(&amp;quot;apiVersion&amp;quot;); } catch (JSONException e) { e.printStackTrace(); } }else if(code == 1012){ //无感认证失败,当前账户已在其他设备登录 }else{ //无感认证失败 } } });</code></pre> <p>quietlyResult(int code, String result)返回参数code和result,含义如下:</p> <table> <thead> <tr> <th style="text-align: left;">字段</th> <th>类型</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">code</td> <td>int</td> <td>code为1000:成功;1012:失败,当前账户已在其他设备登录;其他:失败</td> </tr> <tr> <td style="text-align: left;">result</td> <td>String</td> <td>无感认证结果描述,成功会返回JSON数据,按示例解析即可</td> </tr> </tbody> </table> <h2>sm4加密方法</h2> <p>请确保预认证成功后再调用此方法 示例代码</p> <pre><code class="language-java">String sm4Vaule = AuthManager.getInstance().sm4EncryptMsg(vaule,sessionKey);</code></pre> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">vaule</td> <td>String</td> <td>需要加密的数据</td> </tr> <tr> <td style="text-align: left;">sessionKey</td> <td>byte[]</td> <td>加密密钥</td> </tr> </tbody> </table> <p>sm4EncryptMsg((vaule,sessionKey)返回结果,含义如下:</p> <table> <thead> <tr> <th style="text-align: left;">字段</th> <th>类型</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">sm4Vaule</td> <td>String</td> <td>sm4加密后结果(16进制字符)</td> </tr> </tbody> </table> <h2>日志开关</h2> <p>通过代码设置是否显示日志 示例代码</p> <pre><code class="language-java">AuthManager.getInstance().showLog(boolean showLog);</code></pre> <table> <thead> <tr> <th style="text-align: left;">字段</th> <th>类型</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">showLog</td> <td>boolean</td> <td>true:显示日志;false:不显示日志</td> </tr> </tbody> </table> <h2>SDK版本获取</h2> <p>通过代码获取SDK版本号 示例代码</p> <pre><code class="language-java">String version = AuthManager.getInstance().getVersion();</code></pre> <table> <thead> <tr> <th style="text-align: left;">字段</th> <th>类型</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">version</td> <td>String</td> <td>返回版本号</td> </tr> </tbody> </table> <h2>返回码</h2> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">1000</td> <td>所有请求返回1000即代表成功</td> </tr> <tr> <td style="text-align: left;">1012</td> <td>无感登录失败,当前账户已在其他设备登录</td> </tr> </tbody> </table> <p>其他返回码请结合result结果描述具体分析</p>

页面列表

ITEM_HTML