微信jssdk分享及验签
2015-10-10 15:01
691 查看
微信jssdk分享及验签
第一步:绑定微信安全域名(详情见微信文档)
第二步:验签(服务器验签传递数据验签数据给前台页面)
后台控制器(yii2的框架):
public function actionShow(){
$session=YII::$app->session;
$obj=new WxController('Wx','','');
$sess_token="";$session->get("access_token");
$sess_ticket=$session->get("ticket");
//echo $sess_ticket;
if($sess_token){
$access_tokens=$sess_token;
}else{
$access_token=$obj->actionToken();
$session->set('access_token',$access_token);
$access_tokens=$session->get("access_token");
}
if($sess_ticket){
$ticket=$sess_ticket;
}else{
$jsapiticket=$this->actionJstoken($access_tokens);
$session->set('ticket',$jsapiticket);
$ticket=$session->get("ticket");
}
$timestamp=time();
$nonceStr="Dsfegd234asdfffgssd";
$signature=$this->actionSign($nonceStr,$ticket,$timestamp);
$value['timestamp']=$timestamp;
$value['noncestr']=$nonceStr;
$value['signature']=$signature;
return $this->renderPartial('show',array('value' => $value));
}
服务器验签:
public function
actionSign($nonceStr,$ticket,$timestamp){
$arr['url']="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$arr['timestamp']=$timestamp;
$arr['noncestr']=$nonceStr;
$arr['jsapi_ticket']=$ticket;
ksort($arr);
$op_str="";
foreach($arr as $k=>$val){
$op_str.="$k=$val"."&";
}
$str=substr($op_str,0,-1);
return sha1($str);
}
第三步:前台jssdk调用
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:"wx0ee271dc566db53c", // 必填,公众号的唯一标识
timestamp:<?php echo $value['timestamp'];?> , // 必填,生成签名的时间戳
nonceStr: "<?php echo $value['noncestr'];?>", // 必填,生成签名的随机串
signature: "<?php echo $value['signature'];?>",// 必填,签名,见附录1
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'startRecord',
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 onMenuShareTimeline,onMenuShareAppMessage
});
wx.ready(function(){
//分享到好友
wx.onMenuShareAppMessage({
title: '海豹app,你值得拥有!', // 分享标题
desc: '海豹app,是一个视频直播个性社区!', // 分享描述
link: 'http://wx.codexueyuan.com/index.php?r=admin/show', // 分享链接
imgUrl: 'http://api.haibaotime.com/Public/home/img/person1.png', // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
alert("分享成功!");
},
cancel: function () {
alert("取消分享!");
}
});
//分享到朋友圈
wx.onMenuShareTimeline({
title: '海豹app,你值得拥有!', // 分享标题
link: 'http://wx.codexueyuan.com/index.php?r=admin/show', // 分享链接
imgUrl: 'http://api.haibaotime.com/Public/home/img/person1.png', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
document.querySelector('#haibao').onclick = function () {
wx.startRecord();
}
});
第一步:绑定微信安全域名(详情见微信文档)
第二步:验签(服务器验签传递数据验签数据给前台页面)
后台控制器(yii2的框架):
public function actionShow(){
$session=YII::$app->session;
$obj=new WxController('Wx','','');
$sess_token="";$session->get("access_token");
$sess_ticket=$session->get("ticket");
//echo $sess_ticket;
if($sess_token){
$access_tokens=$sess_token;
}else{
$access_token=$obj->actionToken();
$session->set('access_token',$access_token);
$access_tokens=$session->get("access_token");
}
if($sess_ticket){
$ticket=$sess_ticket;
}else{
$jsapiticket=$this->actionJstoken($access_tokens);
$session->set('ticket',$jsapiticket);
$ticket=$session->get("ticket");
}
$timestamp=time();
$nonceStr="Dsfegd234asdfffgssd";
$signature=$this->actionSign($nonceStr,$ticket,$timestamp);
$value['timestamp']=$timestamp;
$value['noncestr']=$nonceStr;
$value['signature']=$signature;
return $this->renderPartial('show',array('value' => $value));
}
服务器验签:
public function
actionSign($nonceStr,$ticket,$timestamp){
$arr['url']="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$arr['timestamp']=$timestamp;
$arr['noncestr']=$nonceStr;
$arr['jsapi_ticket']=$ticket;
ksort($arr);
$op_str="";
foreach($arr as $k=>$val){
$op_str.="$k=$val"."&";
}
$str=substr($op_str,0,-1);
return sha1($str);
}
第三步:前台jssdk调用
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:"wx0ee271dc566db53c", // 必填,公众号的唯一标识
timestamp:<?php echo $value['timestamp'];?> , // 必填,生成签名的时间戳
nonceStr: "<?php echo $value['noncestr'];?>", // 必填,生成签名的随机串
signature: "<?php echo $value['signature'];?>",// 必填,签名,见附录1
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'startRecord',
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 onMenuShareTimeline,onMenuShareAppMessage
});
wx.ready(function(){
//分享到好友
wx.onMenuShareAppMessage({
title: '海豹app,你值得拥有!', // 分享标题
desc: '海豹app,是一个视频直播个性社区!', // 分享描述
link: 'http://wx.codexueyuan.com/index.php?r=admin/show', // 分享链接
imgUrl: 'http://api.haibaotime.com/Public/home/img/person1.png', // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
alert("分享成功!");
},
cancel: function () {
alert("取消分享!");
}
});
//分享到朋友圈
wx.onMenuShareTimeline({
title: '海豹app,你值得拥有!', // 分享标题
link: 'http://wx.codexueyuan.com/index.php?r=admin/show', // 分享链接
imgUrl: 'http://api.haibaotime.com/Public/home/img/person1.png', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
document.querySelector('#haibao').onclick = function () {
wx.startRecord();
}
});
相关文章推荐
- Java微信开发-服务器配置等信息-
- 微信支付之H5页面WAP端接入
- 微信JSSDK PHP Demo
- 根据输入时间日期返回时间、昨天、本周几、具体日期 类似于微信朋友圈时间 (msserver 标量值函数 )
- 高仿微信对话列表滑动删除效果
- cc2541修改广播信号(以蓝牙接入微信为例)
- PHP获得微信用户的OpenID,然后再通过OpenID和access_token查询用户信息
- 微信红包
- ios9 qq、微信分享和登录
- android 系统自带分享文字+图片到微信朋友圈
- 使用ngrok让微信公众平台通过80端口访问本机
- android仿微信viewpager indicator+frament
- 微信消息推送协议简单分析
- 如何判断微信内置浏览器 MicroMessenger
- 微信公众号无限群发
- 使用elasticsearch1.5.2查询指定距离范围内的城市(类似微信附近的人)
- 仿微信客户端 帧布局中加入fragment
- [模拟Android微信]主界面
- android集成微信支付(全是坑)
- QQ 微信 新浪 无法 分享 收集