# miniapp-auth **Repository Path**: zhen2/miniapp-auth ## Basic Information - **Project Name**: miniapp-auth - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-12 - **Last Updated**: 2022-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # miniapp-auth # wxapp-user 小程序用户登录、授权辅助方法 ## wxappUser 用户详细信息说明 字段|说明|类型|默认值|备注 :---:|:--:|:---:|:--:|:---: userLoginType|用户登录状态|number|0|0 未登录;1已登录 nickName|昵称|string|''|—— avatar|头像|string|''|—— gender|性别|string|0|0女性;1男性 mobilePhone|手机号|string|''|—— autoLoginUrl|免登地址|string|''|—— token|token|string|''|sessionId、openId等加密后的字符串 loginAt|上一次登录成功的时间戳|string|''|判断上一次的登录态是有在有效期(不再使用) sessionId|会话密钥session_key|string|''|会话密钥应当妥善保存,不应传到客户端(不再使用) openId|用户在改小程序/公众号下的唯一标识|string|''|(不再使用) oId|加密后的openId|string|openId不再使用|(不再使用) unionId|用户在微信开放平台下的唯一标识|string|''|—— ## usage ### 配置登录授权所需参数 ```js ... import wxappUser from 'miniapp-auth' ... // 【app.js】 onLaunch() { // 设置default参数[仅设置一次即可] wxappUser.defaults.options = { APP_KEY: '2FEsbkZjDEKQqXSxsPYej3J75pAW', // 小程序在兑吧管理后台的应用信息【必填】 API_BASE_URL: baseUrl, // 接口的基础地址【必填】 LOGIN_API: 'loginUrl', // 登录地址URL 默认为'wechatMiniApp/miniprogramNew' HEADERS_CONFIG: {}, // 请求头信息,可设置多场景 name: '', // 标志名 暂未用到 type: '', // 标志类型 暂未用到 }; // 使用 wxappUser.keepLogin(); } ``` ## apis ### keepLogin(options) 保持登录 - 如果本地有用户信息,且`token`不过期就不再进行登录,否则会调用`login`方法 - 使用方法 ```js import wxappUser from 'miniapp-auth' ... // options非必传,获取用户信息时要传的额外参数 let options = {} wxappUser.keepLogin(options) ... ``` ### login(options) 登录 / 获取用户信息 - 静默调用`wx.login`获取`authcode`,重新获取用户的详细信息并存储在storage中。 - 使用方法 ```js import wxappUser from 'miniapp-auth' ... // options非必传,获取用户信息时要传的额外参数 let options = {} wxappUser.login(options) ... ``` ### loginWithUserInfo 上传用户信息 / 获取用户免登地址 - 使用方法 ```js import wxappUser from 'miniapp-auth' ... // uploadInfo参数 必传 let uploadInfo = { rawData: '', // 从微信api中获取到的用户信息 redirect: '' // 地址 } let data = await wxappUser.loginWithUserInfo(uploadInfo, options, retryLimit); // 返回值 data: { url: '' // 免登地址 } ... ``` ### getRedirectUrl 获取免登地址 / 更新用户登录状态 - 使用方法 ```js import wxappUser from 'miniapp-auth' ... let options = { redirect: '', // 地址 .... } let data = await getRedirectUrl(options) // 返回值 data: { userLogin: 0, // 0或者1 url: '' // 免登地址 } ... ``` ## events ### loginSuccess 登录成功事件 ```js import wxappUser from '@wxappUser/index' // 监听登录成功事件 wxappUser.emitter.on('loginSuccess', () => { // 登录成功后的回调函数 }) ``` ### loginError 登录失败事件 ```js import wxappUser from '@wxappUser/index' // 监听登录失败事件 wxappUser.emitter.on('loginError', (error) => { // 登录失败后的回调函数 error登录失败时传过来的错误信息 }) ``` ### afterUpdateUserInfo 修改基本信息后事件 ```js import wxappUser from '@wxappUser/index' // 监听修改基本信息后事件 wxappUser.emitter.on('afterUpdateUserInfo', () => { // 修改基本信息后的回调函数 }) ``` ### afterUpdateRedirectUrl 修改免登url后事件 ```js import wxappUser from '@wxappUser/index' // 监听修改免登url后事件 wxappUser.emitter.on('afterUpdateRedirectUrl', () => { // 修改免登url后的回调函数 }) ``` ### afterUpdateUserLoginType 更新新老用户完成的事件 ## 待完成的事 1、sessionId的有效时间✅ 用checkSession来判断 有时不准,改用时间 每次更新sessionId的时候记录更新时间 每过2分钟 需要重新获取。 【已完成】 用loginAt来存储登录时间,如果login不是强登录的话,会校验checksession和缓存时间来判断sessionId是否有效。 2、sessionId不安全 需要跟后端沟通 是否可以把sessionId和具体的失效时间放一个字段token里 同时提供一个接口前端用来判断token是否有效。 keepLogin和login keepLogin 判断token是否存在 是否过期 login 判断token是否存在 是否在有效期内 3、获取免登地址需要单独提供接口 如果一个小程序内需要多个免登地址,避免多次调用登录接口 ## 建议生成更新日志的流程: 1. 改动代码 2. `git add . && git cz` 提交本地修改 3. 改变`package.json`中的版本号 4. `npm run changelog`生成日志 5. 提交 `package.json`和`CHANGELOG.md`文件 6. `git add . && git commit && git push` push代码到远程仓库 7. Merge Request