UniApp两应用互调授权调用
介绍
uniapp移动App两应用互调;
需求
一个APP拉起另一个APP进行授权,再回调;
实现流程
- A包处理:去B包申请登陆,携带参数,拉起B包;
- B包处理:解析参数,跳转一个授权页面,点击授权参数回调给A包;
- A包处理:解析B包返回参数;
需求
Demo下载地址:https://gitee.com/coyeking/uniapplaunch;
流程解析
- A包处理:去B包申请登陆,携带参数,拉起B包;
- 使用Boolean plus.runtime.isApplicationExist(appInf);判断包是否安装;
- 再使用plus.runtime.openURL,携带参数打开B包,在B包
onShow()
中监听A包传递来的参数;
代码如下:
// #ifdef APP-PLUS
if(plus.runtime.isApplicationExist({pname:'uni.UNI8264056',action:'myuniapptest://'})){
plus.runtime.openURL('myuniapptest://xxx.xxx.com?account=123 ', error => {
uni.showModal({
title: '失败',
content: JSON.stringify(error),
success: data => {}
});
});
}else{
console.log("B包未安装");
}
// #endif
- B包处理:解析参数,跳转一个授权页面,点击授权参数回调给A包;
App.vue
中使用plus.runtime.launcher == 'scheme'
判断下启动,再获取到A包参数,跳转一个授权页面;
if (plus.runtime.launcher == 'scheme') {
if(plus.runtime.arguments != ""){
try {
var data = plus.runtime.arguments;
var res= data.split('?');
let url = `/pages/ThirdPartyAuthorization/ThirdPartyAuthorization?${res[1]}`;
uni.navigateTo({
url:url
})
} catch (e) {
console.log('失败');
}
}
}
- 登陆界面收到请求app信息后,授权,将授权后的令牌数据返回A包,同理,
plus.runtime.openURL
携带参数打开A包,A包在监听参数并处理令牌数据即可完成互调授权;