小程序---365笔记第11天---微信小程序登录接入

接入前的准备工作参考文档:微信小程序登录接入 (必做)
登录逻辑:小程序登录逻辑梳理
使用插件参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/using.html
一、添加插件
二、引入插件
三、接入方法及参数
四、提供的方法
五、前端登录状态判断建议
六、小程序H5登录态打通
七、小程序间登录态打通
八、需要配置的域名
九、常见问题
1、demo中的代码需要复制到自己项目中吗
2、插件引入控制台报page相关错误
3、插件引入控制台报export、import相关错误
4、登录后想获取用户pin
5、登录成功缓存中有pt_key,但页面没有跳回
6、微信手机号登录提示系统繁忙,请稍后再试
7、 选择“微信手机号快捷登录”先取消授权-再确定授权,登录不成功  提示请不要重复点击
8、 插件未授权使用
9、 获取手机号失败,该appid没有权限
10、 开发工具中点登录注册没反应。控制台:开发者工具上不支持调试插件功能页,请在真机上测试。

.

一、添加插件
微信公众平台——设置——第三方服务——插件管理——添加插件——搜索“登录管理服务”——添加。
demo版本需与插件版本对应。见http://git.jd.com/h5-miniProgram-login/wx_login_plugin  权限问题请联系迟潇潇添加
二、引入插件
为确保插件的正常使用,请确保基础库版本高于2.1.0 (低版本兼容建议方案:微信管理后台——设置——基础库最低版本设置——设置——2.1.0)
app.js中
引入插件
"pages": [
   "pages/demo/demo",                    //登录成功跳回的示例页面,可删除
   "pages/login/index/index",
   "pages/login/main/main",
   "pages/login/union/union",
   "pages/login/web-view/web-view",
   "pages/login/consignee/consignee",
   "pages/login/wv-common/wv-common"
 ],
"plugins": {
   "loginPlugin": {
     "version": "1.0.4",       
     "provider": "wxefe655223916819e"
   }
 },

三、接入方法及参数
在public/loginConfig.js 中可设置固定参数、不变参数、默认参数。在需要登录的地方跳转至登录页/pages/login/index/index (默认路径),并通过url传递定不同业务场景下的不同参数。原生小程序中跳转方式使用 wx.redirectTo 、wx.nagivateTo...,内嵌h5页面中跳转方式使用JSSDK中提供的方法跳回小程序原生登录页,具体跳转方式按业务需求自行选取。
跳登录时url仅需传递不同业务场景下的特殊参数,不变参数在loginConfig中配置即可。若跳转时的参数与loginConfig中参数key值相同,则取跳转时参数。
示例:
loginConfig中参数
export let config = {
  wxversion: 'wxefe655223916819e',
  appid: 269,
  returnPage: undefined,
  pageType: undefined,
  isLogout: undefined,    
  noWXinfo: undefined,  
  h5path: undefined,   
  logoPath: undefined,
  isTest:  undefined  
}

.

小程序跳登录url传参
Page({
  toLogin(){
    let returnPage='/pages/demo/demo';
    wx.redirectTo({ url:`/pages/login/index/index?returnPage=${returnPage}` }) //登录成功跳回页面为demo
  }
})
h5跳小程序登录url传参
let returnPage = '登录成功需跳回的页面';
let pageType = '登录成功需跳回的页面类型'
wx.miniProgram.navigateTo({ url: `/pages/login/index/index?isH5=1&returnPage=${returnPage}&pageType=${pageType}`});
 
参数说明: (非特殊业务需求,非必传参数请不要传递)
Key
是否必传
说明
备注
wxversion	是	小程序开发的appid	如:wxefe655223916819e
appid	是	业务方接入登录申请的appid,业务方务必申请新的appid,申请请参考《微信小程序登录接入》	如:269
returnPage	是	
登录成功后跳回url
如:'/pages/demo/demo'
pageType	否	
登录成功跳回页面类型,默认redirectTo跳回。
可选值:h5、switchTab、reLaunch
isLogout	否	退出后重新登录	传值即表示退出后重新登录。
noWXinfo	否	不获取微信用户信息,即分流页点登录直接进入登录页。	传值即表示不获取微信用户信息。
h5path	否	打开H5页面所需web-view所在文件路径,默认路径 /pages/login/web-view/web-view。	路径改变需传此值,不变不要传
logoPath	否	自定义logo,默认京东狗,默认尺寸 318* 390 像素。	需为线上地址
navigationBarColor
否	设置导航栏样式,设置后所有登录相关页面会改为相同样式,优先级高于app.json中统一样式	参数同微信api:setNavigationBarColor 无回调
navigationBarTitle
否	设置导航栏标题,设置后所有登录相关页面会改为相同标题	参数同微信api:setNavigationBarTitle 无回调
isTest
否	接口环境控制。	默认线上环境,传值表示预发环境(预发环境必须在内网测试)
开普勒特殊参数,非开普勒业务方勿传:
isKepler
否	是否为开普勒	传值即为开普勒

.

四、提供的方法
常用方法:getStorageSync(key)
获取插件存储的缓存:
获取插件存储的登录缓存
let plugin = requirePlugin("loginPlugin");
let ptKey = plugin.getStorageSync("jdlogin_pt_key")
其他方法:
1、public/util 中提供的方法 。 均为跳转页面所需方法,插件跳转依赖其中的方法,禁止修改。
方法名
参数
说明
redirectToH5({page, wvroute})
page 必传 h5地址,
wvroute 选传 wv-common 所在路径,如修改login中文件路径,需传递该参数,否则不要传
小程序中打开H5页面,登录态打通,调用该方法跳转到H5页面
2、插件中提供的方法。
方法名
参数
说明
支持版本
setStorageSync(key, value)
key 必传 缓存要存的key值
value 必传 需要存储的内容
存入登录插件缓存	 
getStorageSync(key)
key 必传 要读取的缓存key	读取登录插件中的对应缓存	 
formH5Url({page, wvroute})
page 必传 h5地址
wvroute 选传 wv-common 所在路径,如修改login中文件路径,需传递该参数,否则不要传
将h5地址转换成小程序中的地址	 
getLoginParams()
/	获取缓存中存储的登录所需参数	 
logout({callback})
callback,非必传。 调用退出登录后的回调函数,会返回接口返回信息
退出登录。1、调用退出登录接口清除服务端pt_key 2、清除本地登录相关所有缓存	1.0.5
getLoginToken({callback})	callback 返回接口信息 。接口信息参考微信小程序间互跳登录打通说明	小程序间登录态打通,获取token	1.1.1
transferTokenToLogin({tokenkey, callback})	tokenkey token, callback 返回登录信息。接口信息参考微信小程序间互跳登录打通说明	小程序间登录态打通,token换登录信息	1.1.1

.

五、前端登录状态判断建议
1、判断是否登录(只有插件或只有源码)
小程序前端仅仅判断本地缓存中是否存在pt_key信息(字段名为jdlogin_pt_key),而不进行验证是否有效。
如果pt_key不存在,那么进入登录页面进行小程序登录;如果存在,以cookie形式携带pt_key调用后台业务接口,由业务后台进行判断pt_key的有效性(参考微信小程序登录接入 四登录态验证)
如果pt_key无效,返回“未登录”的错误码,提示小程序前端进行登录
2、先接的源码再接的插件,处于过渡阶段。
建议先判断源码缓存中是否有有效登录态(见1),
有:继续用该登录态;
没有:判断插件中是否有有效登录态。插件中没有:去登录。有正常使用。
即:小程序缓存和插件缓存中均无有效登录态,去登录。其他情况,哪里有用哪里的。
3、判断是否登录成功
缓存中有jdlogin_pt_key

.

六、小程序H5登录态打通
在H5页面中,如果页面未登录(pt_key不存在或无效),建议跳回小程序登录页面进行登录,登录成功后重新打通进入H5页面,实现一次登录两端有效(小程序端和H5端)
1、H5跳回小程序
示例 wx.miniProgram.navigateTo({url: '/pages/login/index/index})
具体跳回小程序的逻辑参考https://mp.weixin.qq.com/debug/wxadoc/dev/component/web-view.html
2、小程序web-view中内嵌打通登录态的H5页面,使用util.redirectToH5({page:h5url}) 见四.1
 
七、小程序间登录态打通
小程序间登录态打通。以A小程序跳到B小程序为例。插件中的方法见四.2
1、在A小程序中调用getLoginToken方法获取token。(确保A小程序已登录才会获取到有效的token)
A小程序获取token
let plugin = requirePlugin("loginPlugin");
Page({
  gentoken(){
    plugin.getLoginToken({
        callback:(res)=>{
            console.log(res)
        }
    });
  }
})
2、在B小程序中调用transferTokenToLogin方法传入token获取登录信息。
B小程序用token获取登录信息
let plugin = requirePlugin("loginPlugin");
Page({
  tokentologin(){
    plugin.transferTokenToLogin({
        tokenkey:'AAEAMB43alCsHVx8wwu_VHhTgGJQEZMxAWtQ0S01Wtg24XSAjdIk6Tx68ScRYt4e9hVdzQ',
        callback:(res)=>{console.log(res)}
    });
  }
})

.

八、需要配置的域名
1、https://wxapplogin.m.jd.com
2、待补充
九、常见问题
1、demo中的代码需要复制到自己项目中吗
需要。pages/login和public 可直接复制,app.js和app.json按需复制,pages/demo跳转登录示例无需复制。
2、插件引入控制台报page相关错误
基础库版本低于2.1.0 或复制demo中代码有遗漏
3、插件引入控制台报export、import相关错误
开发工具详情中勾选 ES6转ES5
4、登录后想获取用户pin
前端无法获取用户pin,只能后台获取,获取用户pin流程:前端cookie中传pt_key,业务后台调用我们提供的sdk通过pt_key获取用户pin。文档 登录态验证拦截器。后台相关问题咨询:王鸿运(wanghongyun)、赵俊杰(zhaojunjie1)
5、登录成功缓存中有pt_key,但页面没有跳回
检查 returnPage 和pageType传参是否正确,控制台有无报错
6、微信手机号登录提示系统繁忙,请稍后再试
检查 loginConfig中的wxversion和project.config.json 中的appid是否一致,不一致改为一致。一致仍报错,将当前项目新建一下,新建时的appid填写wxversion配的appid。
如果还有问题请联系肖轩(xiaoxuan)。
7、 选择“微信手机号快捷登录”先取消授权-再确定授权,登录不成功  提示请不要重复点击
请按demolist 中1.1.1版本更新index.js文件
8、 插件未授权使用
微信公众平台——设置——第三方服务——插件管理——添加插件——搜索“登录管理服务”——添加。
9、 获取手机号失败,该appid没有权限
目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)
注册步骤参见微信小程序注册
10、 开发工具中点登录注册没反应。控制台:开发者工具上不支持调试插件功能页,请在真机上测试。
见微信插件功能页真机测试常见步骤和常见问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值