H5跳转⼩程序,开放标签wx-open-launch-weapp完整流程说明(踩坑之
路)
近来做⼀个H5跳转⼩程序的需求,⼀开始觉得没啥留到后⾯再做,结果前期的⼤意造成了后期不断的踩坑跳坑,对规则的不甚理解造成了这样的⼀种现状,为了后来的⼈不要和我⼀样,我就写了这篇讲⼀些具体会遇到的情况,⼤家如果遇到可以按照我这样做,我现在按照顺序⼀步⼀步的把我的踩坑之路讲述出来。
具体问题如下:
1.绑定域名;
2.签名算法;
3.IP⽩名单;
5.标签的显⽰;
1. access_token需要的appid和appsecret(注意是⼩程序对应的)就按⽂档讲的get请求,这块还有⼀点注意,就是在服
务器上调试需要将域名放⼊IP⽩名单,具体的设置在上⾯有,这块⾮常重要千万注意,不然会跳出40048这个错误码。
2. 然后是jsapi_ticket同样按照get请求获得,这个如果access_token是对那必然也会成功。
3. 接下来是随机字符串(建议16位,因为官⽅⽰例也是16位)
///<param name="length">⽬标字符串的长度</param>
///<param name="useNum">是否包含数字,1=包含,默认为包含</param>
///<param name="useLow">是否包含⼩写字母,1=包含,默认为包含</param>
///<param name="useUpp">是否包含⼤写字母,1=包含,默认为包含</param>
///<param name="useSpe">是否包含特殊字符,1=包含,默认为不包含</param>
///<param name="custom">要包含的⾃定义字符,直接输⼊要包含的字符列表</param>
///<returns>指定长度的随机字符串</returns>
public static string GetRandomString(int length,bool useNum,bool useLow,bool useUpp,bool useSpe,string custom)
团购小程序怎么做{
byte[] b =new byte[4];
new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
Random r =new Random(BitConverter.ToInt32(b,0));
string s =null, str = custom;
if(useNum ==true){ str +="0123456789";}
if(useLow ==true){ str +="abcdefghijklmnopqrstuvwxyz";}
if(useUpp ==true){ str +="ABCDEFGHIJKLMNOPQRSTUVWXYZ";}
if(useSpe ==true){ str +="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";}
for(int i =0; i < length; i++)
{
s += str.Substring(r.Next(0, str.Length -1),1);
}
return s;
}
5. 接下来是时间戳
public static long CreateTimestamp()
{
return(DateTime.Now.ToUniversalTime().Ticks -621355968000000000)/10000000;
}
6. 签名的url必须和你前端的url(也就是你要跳⼩程序之前的HTML)相同,注意要⽤http
7. 签名加密
/// <summary>
/// 签名算法
/// </summary>
/// <param name="jsapi_ticket">jsapi_ticket</param>
/// <param name="noncestr">随机字符串(必须与wx.config中的nonceStr相同)</param>
/// <param name="timestamp">时间戳(必须与wx.config中的timestamp相同)</param>
/// <param name="url">当前⽹页的URL,不包含#及其后⾯部分(必须是调⽤JS接⼝页⾯的完整URL)</param>
/// <returns></returns>
public static string GetSignature(string jsapi_ticket,string noncestr,long timestamp,string url,out string string1)
{
var string1Builder =new StringBuilder();
string1Builder.Append("jsapi_ticket=").Append(jsapi_ticket).Append("&")
.Append("noncestr=").Append(noncestr).Append("&")
.Append("timestamp=").Append(timestamp).Append("&")
.Append("url=").Append(url.IndexOf("#")>=0? url.Substring(0, url.IndexOf("#")): url);
string1 = string1Builder.ToString();
return Sha1(string1);
}
/// <summary>
/// Sha1
/// </summary>
/// <param name="orgStr"></param>
/// <param name="encode"></param>
/// <returns></returns>
public static string Sha1(string orgStr,string encode ="UTF-8")
{
var sha1 =new SHA1Managed();
var sha1bytes = System.Text.Encoding.GetEncoding(encode).GetBytes(orgStr);
byte[] resultHash = sha1.ComputeHash(sha1bytes);
string sha1String = BitConverter.ToString(resultHash).ToLower();
sha1String = sha1String.Replace("-","");
return sha1String;
}
8. 前⾯如果都是正确的话后⾯签名应该是没问题的,重要的在于url必须要相同,这个要千万注意,不然后⾯会疯狂弹出60032这个错误
码这个问题,IP⽩名单⾥⾯的操作也要注意,总之签名算法这块要跟着规则来,如果第⼀次做的要多看⼏次我的描述,不然后⾯出现的问题会很多。
四、wx.config的配置,这个要按照官⽅⽂档来,刚进去页⾯就要从后端请求相关数据,然后再在⾥⾯开始配置config
1. debug,⼀般为false,如果前期调试可以写成true
2. appid,注意这⾥还是要的appid不是⼩程序的appid!
3. timestemp,签名的时间戳前⾯已经⽣成了拿来⽤就⾏了
4. noncestr,同上
5. signature,同上
6. jsapilist,这个必填不能不填,随便填⼀个都⾏
7. opentaglist,我们是HTML⽹页跳转的所以填[“wx-open-launch-weapp”]
8. wx.ready这个为配置成功的返回⽅法,要写上去,不然可能苹果⼿机会出现按钮稍纵即逝(出现⼜消失)的情况
五、标签的设置,wx-open-launch-weapp这个标签具体⼏个属性说下
1. username这个属性指的是你要跳转的⼩程序的原始ID,这个要进⼩程序查设置就能知道
2. path为你要跳到的⼩程序的页⾯,可以带参数跳转
3. 特别注意,这个按钮点击是跳转的,点击之前签名属性什么的都配置好了,如果配置好了按钮会出现,如果没有出现,那就是没有配
置好。
⼀般到了这⾥基本上就没问题了,如果还有问题要多看我上⾯写的,特别是配置域名和ip⽩名单这两个地⽅。
附上:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论