EasyWeChat 公众号 jssdk 获取签名 功能 ------> 公众号自定义分享

使用easyWeChat  官方文档上描述的  前端直接使用会出现 签名错误   errMsg":"config:fail,invalid signature

https://easywechat.com/5.x/basic-services/jssdk.html

/**
	 * 公众号签名
	 * @return void
	 * @throws \Psr\SimpleCache\InvalidArgumentException
	 */
	public function getOfficialAccount1()
	{
		$url = $this->request->param('url');
		$config = [
			'app_id' => 'your app_id',
			'secret' => 'your app_secret',

			// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
			'response_type' => 'array',

			//...
		];

		$app    = Factory::officialAccount($config);

		if($url)
		{
//			$url = explode('#',$request->url);
			$app->jssdk->setUrl(urldecode($url));
		}

		$data = json_decode($app->jssdk->buildConfig(array('updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'),true),true);

		$this->success("获取成功",$data);


	}

使用 https://www.weixinsxy.com/jssdk/#menu-location 查看权限

返回值---->  singtrue  提示  errMsg":"config:fail,invalid signature

解决  获取token  jsapi_ticket 来验证 签名是否正确

验证签名 ----->https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign


	public function getOfficialAccount()
	{
		$url = $this->request->param('url');

		$config =  [
			'app_id' => 'your app_id',
			'secret' => 'your app_secret',

			// 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
			'response_type' => 'array',

			//...
		];
		$app    = Factory::officialAccount($config);
		$access_token = $app->access_token->getToken();
		$jsapi_ticket = $app->jssdk->getTicket();


		if($url)
		{
//			$url = explode('#',$url);
			$app->jssdk->setUrl(urldecode($url));
//			$app->jssdk->setUrl($url);
		}
//		$data = json_decode($app->jssdk->buildConfig(array('updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'),true),true);
		$data = json_decode($app->jssdk->buildConfig(array('updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage'),false),true);

//		$info = ['access_token'=>$access_token,'jsapi_ticket'=>$jsapi_ticket];
//		$this->success("",['info'=>$info,'data'=>$data]);

		$signature = "jsapi_ticket=".$jsapi_ticket['ticket']."&noncestr=".$data['nonceStr']."&timestamp=".$data['timestamp']."&url=".$url;
		$res = [
			"debug"=>$data['debug'],
			"beta"=>$data['beta'],
			"jsApiList"=>$data['jsApiList'],
			"openTagList"=>$data['openTagList'],
			"appId"=>$data['appId'],
			"nonceStr"=>$data['nonceStr'],
			"timestamp"=>(string)$data['timestamp'],
			"url"=>$data['url'],
			'signature_old'=>$signature,
			'jsapi_ticket'=>$jsapi_ticket['ticket'],
			'access_token'=>$access_token['access_token'],
			"signature"=>sha1($signature),
		];
		$this->success("获取成功",$res);
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Vue2中接入微信公众号JSSDK,您需要按照以下步骤进行操作: 1. 在公众号后台配置JS接口安全域名,确保您的域名已经添加到了微信公众平台的安全域名列表中。 2. 安装使用`weixin-js-sdk`库,可以通过npm进行安装: ``` npm install weixin-js-sdk ``` 3. 在需要使用JSSDK的组件或页面中引入`weixin-js-sdk`库: ```javascript import wx from 'weixin-js-sdk'; ``` 4. 在组件或页面的`mounted`生命周期钩子函数中初始化JSSDK,并进行相关配置: ```javascript mounted() { this.initWeChatJSSDK(); }, methods: { initWeChatJSSDK() { // 异步请求后端接口获取微信配置信息 axios.get('/api/getWeChatConfig') .then(response => { const { appId, timestamp, nonceStr, signature } = response.data; wx.config({ debug: false, appId, timestamp, nonceStr, signature, jsApiList: ['chooseImage', 'scanQRCode'] // 需要使用的JSSDK接口 }); wx.ready(() => { // JSSDK配置成功后的回调函数 console.log('JSSDK配置成功'); }); wx.error((res) => { // JSSDK配置失败后的回调函数 console.error('JSSDK配置失败', res); }); }) .catch(error => { console.error('获取微信配置信息失败', error); }); } } ``` 5. 在需要使用JSSDK的地方调用对应的接口,比如选择图片接口`chooseImage`: ```javascript methods: { chooseImage() { wx.chooseImage({ count: 1, success: function (res) { // 选择图片成功后的处理逻辑 const localIds = res.localIds; // ... }, fail: function (error) { // 选择图片失败后的处理逻辑 console.error('选择图片失败', error); } }); } } ``` 以上是在Vue2中接入微信公众号JSSDK的基本步骤,您可以根据实际需求进行相应的配置和调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值