看到很多开发者在H5免鉴权跳转小程序这处于懵逼状态!!!!
我下边解释一下什么叫免鉴权?????
下方是官方文档内对免鉴权跳转能力的解释
注意第二段话
静态网站网页在微信客户端打开时
也就相当于什么,相当于在微信中打开这个开放按钮时候才会免鉴权,此时是通过什么跳转的呢
没错是通过上边代码中
username="小程序原始账号 ID(gh_ 开头的)"
path="要跳转到的页面路径"
此时根据这两个参数跳转的,此时和云函数半毛钱关系没得!!!!
此时相当于什么 相当与小程序内的
wx.navigateToMiniProgram(Object object)
此时你想说我就想单纯实现微信内H5的跳转,且想在路径传参怎么解决???
js获取静态网站url后的参数,原生js去替换username与path的值呀
let launchBtn = document.getElementById('launch-btn')
launchBtn.setAttribute("path", "XXXXXXXXXX"); //HTML 属性
launchBtn.setAttribute("username", "XXXXXXXXXX"); //HTML 属性
在微信以外的渠道中都需要走云函数去请求拿到 openlink 或自建网站鉴权调用接口获取openlink
那些发帖想在小程序A云函数跳转B小程序的别想了不可以
在uniapp里腾讯云函数搞的也别想了,那边没有内置小程序的sdk,调用不动云函数的
乖乖去云开发里上传静态网站,并打开允许访问,云函数打开未登录允许调用
或者自建网站鉴权获取
下边发一条我自己开发的H5跳小程序链接,你们可以去测试
https://u.imvp.top/?s=jlqwyBFN ——本链接由微信小程序【链接工具】生成
看到这里有人问我,我这个链接后边的参数是干什么的?这个参数是控制跳转哪一篇文章的加密id。
在任何情况下访问网站我都会去解析真实对应的文章链接是什么?
微信内我会将真实链接拼接在wx-open-launch-weapp属性内
if(res.result.url){
launchBtn.setAttribute("path", `/pages/basics/web_view.html?url=${encodeURIComponent(res.result.url)}`); //HTML 属性
}
此时文章链接已经拼接在属性path上了。微信内点击也会跳转到指定位置,
非微信内我会拿到openlink 重定向Url唤醒微信,实现外链跳转。
云函数端代码同样采用了官方示例代码,增加了openlink 入库绑定对应文章链接与加密参数,免得多次生成浪费!
2021年1月26日补充
因为目前URL Scheme进入小程序仅可进入正式版本,无法进入测试版,自己在开发时候专门做了参数埋点,上次测试后才二次对接参数提版,为此我将参数格式说明一下
//小程序端首页onLoad
onLoad(options) {
if(options.s=='u'){ //openlink解析后的参数标志位
uni.navigateTo({
url:`/pages/basics/web_view?id=${options.id}`
})
}
}
//云函数端,生成openlink
const result = await cloud.openapi.urlscheme.generate({
jumpWxa: {
path: `/pages/index/index`, // 替换自己的url路径
query: id?'s=u&id='+id:'', // s=u 作为我自己的参数标志位
},
// 如果想不过期则置为 false,并可以存到数据库
isExpire: false,
// 一分钟有效期
expireTime: parseInt(Date.now() / 1000 + 60),
})
//存储跳转链接
saveOpenlink(id,result.openlink)
return {
...result, //urlscheme返回的所有参数 主要使用result.openlink
s:id, //加密文章ID
url:articleData.data.url //文章链接
}
//html端 供小程序环境访问跳转使用
let launchBtn = document.getElementById('launch-btn')
launchBtn.setAttribute("path", `/pages/basics/web_view.html?url=${encodeURIComponent(res.result.url)}`); //HTML 属性
仍有询问弹窗吗
我想问下id是怎么传过来的 又是怎么从云函数取的, 文章都没提到,就在云函数直接用了.
仔细看看文章哦,文章的补充内容部分
jumpWxa: {
path: `/pages/index/index`, // 替换自己的url路径
query: id?'s=u&id='+id:'', // s=u 作为我自己的参数标志位
},
id 传过去了
onLoad(options){
options.id //拿到了
}
大佬,我这里测试成功了,但是这个H5页面的链接怎么控制?可以自定义吗?
launchBtn.setAttribute("path", `/pages/basics/web_view.html?url=${encodeURIComponent(res.result.url)}`); //HTML 属性
大佬,我用官方的直接改报错,
Uncaught (in promise) Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID , cloud function service error code -501023, error message Permission denied (callid 1614915209251-0.6090376160747115); at cloud.callFunction api;
与开发 云函数 云函数权限 设置安全规则
我这样写的,这个外部H5跳转小程序的,没法正常跳转到指定的页面,只有在微信打开的H5才能跳转到指定的页面,path的值为:/v2pages/register/register.html?from=123&secondFrom=123。这是为什么呢?
我看你的是这样写的地址,应该我上面写的方式应该也没问题吧
能看下你的云函数吗?
想看我的静态网站代码,直接F12审查看看源码,都是在官方示例代码基础上稍加修改,样式都没改