最近几天被这个公众号和小程序的跳转弄得好烦,由于公众号用的是插件,没有办法直接跳转小程序。
一开始想着用第三方平台做公众号菜单,但是插件的功能又被替换了无法使用。
思前想后,实在没有办法弄了,只能选择通过H5页面跳转。
但是跳转需要通过AccessToken生成URL Scheme,但是AccessToken又需要Appid和AppSecret。
所以就需要分两步走:
1、通过Appid和AppSecret获取AccessToken
请求地址(GET方式):
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
$appid = 'Appid';
//登陆mp.weixin.qq.com获取.
$app_secret = 'AppSecret';
//登陆mp.weixin.qq.com获取.
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' .$appid. '&secret=' .$app_secret;
//开发文档中auth.getAccessToken的请求地址
$token = file_get_contents($url);
//利用file_get_contents函数获取Token,当然也可以自己修改用Curl方式获取
$decode = json_decode($token);
//返回的是json,需要先decode
$access_token = $decode->access_token;
//取出AccessToken的值
$echo $access_token;
//输出AccessToken的值
2、通过AccessToken获取Openlink
请求地址(POST方式):
https://api.weixin.qq.com/wxa/generatescheme?access_token=ACCESS_TOKEN
$link_url = 'https://api.weixin.qq.com/wxa/generatescheme?access_token='.$access_token;
//urlscheme.generate请求地址
$link_data = '{
"jump_wxa":
{
"path": "/pages/publishHomework/publishHomework",
"query": "",
},
"expire_time":1606737600
}';
//path为小程序页面路径,expire_time为scheme码的失效时间
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $link_data);
curl_setopt($ch, CURLOPT_REFERER, $link_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$resdata = curl_exec($ch);
curl_close($ch);
$data_back = json_decode($resdata);
$open_link = $data_back->openlink;
echo $open_link;
//使用Curl提交Post数据,返回数据需要先json decode,然后获取Openlink并输出
3、自动跳转到小程序
为什么先放这个截图,是因为H5跳转小程序肯定会弹出这个提示的,而且这个提示是官方的限制,是没有办法取消的。
至少我是没办法
header("Location: $open_link");
文章到这里就已经结束了,自己新建一个PHP文件,修改好保存并上传到服务器即可。
页面电脑端是无法访问的,只能通过微信打开并跳转。
当然如果你能通过Universal Links校验就当我没说。
4、不想动手?那就直接用下面这个吧。
城通网盘 密码7724