- 求助,如何解决统一服务消息报api unauthorized?
-----------------以下问题已解决,下面给出解决方案------------------ 使用的是统一服务消息:uniformMessage.send 因为我开发的是小程序,没有拿到用户在服务号的openid。 所以想使用这个接口,通过使用在小程序的openid来推送消息到服务号模板上,但一直提示api unauthorized rid: 5f491c90-4f68c550-15bd7ef1。 ^ array:2 [ "errcode" => 48001 "errmsg" => "api unauthorized rid: 5f491c90-4f68c550-xxx" ] 接口权限已获得 [图片] 模板消息已添加 [图片] 服务号已认证 [图片] 小程序已关联 [图片] 我是用小程序的appid和AppSecret获取的AccessToken,可以获取到,也能发送一次性订阅消息,但就是不能发送统一服务消息。 接收用户已经关注服务号了。 另外请求的地址也没错:https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token= 代码如下 // 发送统一服务消息 public function sendMsg2() { // 获取AccessToken $acc = new AccessToken(); $accessToken = $acc->get(); // 组装请求地址 $url = Config::get('util.form_msg_url') . $accessToken; $postData = [ 'touser' => 'xxx', // 接受用户小程序端的openid 'mp_template_msg' => [ 'appid' => 'xxx', // 公众号appid 'template_id' => 'xxx', // 模板id 'url' => '', 'miniprogram' => [ 'appid' => 'xxx', // 跳转小程序appid 'pagepath' => 'pages/index/index' ], 'data' => [ 'first' => ['value' => '有新的养殖户申请', 'color' => '#f44'], 'keyword1' => ['value' => 'xxx', 'color' => '#173177'], 'keyword2' => ['value' => '养殖户', 'color' => '#173177'], 'keyword3' => ['value' => date('Y-m-d H:i:s'), 'color' => '#173177'], 'remark' => ['value' => '请尽快审核相关资料是否真实有效', 'color' => '#173177'] ] ] ]; $resultStr = curl_post($url, $postData); $resultArr = json_decode($resultStr, true); dump($resultArr); } 求回复,万分感激。 --------------------------解决方案----------------------------- 发现很多人也遇到过此类问题,希望帮助到初学者或者刚接触微信开发的开发者们。 注意点: 1、accesstoken是用小程序的appid和secret获取的。 2、接受用的openid为小程序端的。 3、mp_template_msg.appid为公众号的appid。 4、mp_template_msg.url不能为空,那么怕写个xxx。 5、如果要小程序,则miniprogram下填充小程序的appid和page。 6、统一服务消息的发送位置为公众号。 7、公众号的小程序一定要关联以下哦(不需要开放平台关联)。 先上完整代码: <?php namespace app\service; use think\facade\Config; // 发送统一服务消息 class TemplateMsg { /** * 发送服务消息 * @return mixed * @throws \think\Exception */ public function send() { // 获取全局唯一调用凭证 $accessTokenModel = new AccessToken(); $accessToken = $accessTokenModel->get(); // 请求地址(这个地址要检查下哦) $sendUrl = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token='.$accessToken; $postData = [ 'touser' => ‘接受用户小程序端的openid’, 'mp_template_msg' => [ 'appid' => ‘公众号appid’, 'template_id' => '公众号模板id', 'url' => '模板消息跳转路径,如果要跳转小程序,那么下面的miniprogram字段要填充,且该字段也要填充', 'miniprogram' => [ 'appid' => ‘小程序appid’, 'page' => ‘小程序跳转路径’ ], 'data' => [ 'first' => ['value' => ‘xx’, 'color' => '#ff4444'], 'keyword1' => ['value' => ‘xx’, 'color' => '#173177'], ] ]; // 发送服务消息 $resultStr = curl_post($sendUrl, json_encode($postData)); $resultArr = json_decode($resultStr, true); if (empty($resultArr)) { // 微信内部错误 } if ($resultArr['errcode'] !== 0) { // 其他错误 } return $resultArr; } } 获取accessToken <?php namespace app\service; use think\Exception; use think\facade\Cache; use think\facade\Config; // 获取access_token(全局唯一接口调用凭据) class AccessToken { protected $wxTokenUrl; // 请求地址 const TOKEN_CACHED_KEY = 'access'; // 缓存键 const TOKEN_EXPIRE_IN = 7000; // 缓存有效期 /** * 组装请求地址 * AccessToken constructor. */ public function __construct(){ // access_token_url长这样:"https://api.weixin.qq.com/cgi-bin/token?" . "grant_type=client_credential&appid=%s&secret=%s" // 注意:we_app_id是小程序appid,we_app_secret时小程序密钥 $this->wxTokenUrl = sprintf( Config::get('util.access_token_url'), Config::get('util.we_app_id'), Config::get('util.we_app_secret') ); } /** * 获取AccessToken * @return mixed|string * @throws Exception */ public function get() { // 先从缓存获取 $accessToken = $this->getFromCache(); // 缓存不存在 微信服务器获取 if (!$accessToken) { return $this->getFromWxServer(); } return $accessToken; } // 往下就不写了。。。。。 }
2020-08-28 - 新增类目进入二次审核阶段,小程序还在处于审核阶段?
小程序添加新的类目(社交-笔记),并提交代码审核(提交日期:2020-01-17 18:38:00)。2020-01-17 17:21:42时分代码被驳回,驳回理由:服务类目"社交-笔记_"与你提交代码审核时设置的功能页面内容不一致。于是我立即进行反馈,2020-01-17 17:21:42时分微信公众平台发来通知,通知内容:小程序进入二次审核阶段,需经当地网信办审核确认。数日后我们与当地网信办取得联系,据回应:现阶段小程序可以进行发布,服务类目的审核不影响小程序的发布。但是小程序目前(2020-1-20 16:35:07)还是处于审核中阶段,并不能进行发布。希望官方能帮忙看一下我们的小程序目前是什么情况,万分感谢!万分感谢!
2020-01-20