关于微信开放平台账号管理权限

Context

最近在为客户部署小程序时遇到一个问题,通过日志定位到问题是,,没有获取到小程序用户的UnionID,导致无法对小程序用户和卡包(公众号)用户形成有效的映射,bulabula…总之,翻到日志才想起来,应该通过微信提供的接口创建微信开放平台,然后绑定另一个appid即可。

想想也没啥,之前也为其他客户部署过,无非是调用两次接口:一次创建,一次绑定,,齐活~

BUT!!!

但!!!这次搞的格外艰辛,微信服务器一直返回

1
2
3
4
{
"errcode":40013,
"errmsg":"invalid appid hint: [iAEcfA03241959]"
}

日狗,真心日狗!确定一定以及肯定,两个appid都没问题,,因为通过**创建 开放平台帐号并绑定公众号/小程序**接口,两个appid都可以创建开放平台。
搞到这儿也想到一个问题,,

我想通过接口,把客户的小程序和公众号绑在同一个开放平台,,无疑,小程序肯定是授权给第三方平台的。倘若,我用小程序的appid,创建开放平台,然后将公众号的appid绑到小程序创建的开放平台上。
那么问题来了,,公众号需要将开放平台账号管理权限授权给第三方平台么???

为了赶紧绑定成功先,暂时将公众号的开放平台账号管理权限授权给第三方平台了。

Succeed??

我疯了,成功疯了。。最后找之前没接触过这块儿的同事从阅读文档开始,慢慢review代码。刚开始也是不行,,后来他要静静,然后闷头搞。

一会儿,,诶?我好像创建成功了?!

稀里糊涂的 创建成功了,,然后我要求他复盘整个流程。

  1. 分别用两个appid都创建开放平台;
  2. 然后在小程序后台解绑开放平台;
  3. 通过接口将小程序的appid绑定到公众号创建的开放平台账号上。

前两步都没啥,但是第三步!我在调用接口的地址上发现点端倪,跟我之前调用时写的不一样,然后就提醒他这儿应该写公众号的appid,而不是小程序的。他突然也想到了些什么,很肯定的说,上次绑定成功的时候就是这样写的!

终于找到问题所在,,验证,成功!!!
在这儿详细复盘下,给大家伙儿做个参考,,

我将文档中将 公众号/小程序绑定到开放平台帐号下的接口封装成我们自己的接口,,伪代码如下👇

1
2
3
4
5
6
7
8
9
10
11
/**
* 将 公众号/小程序绑定到开放平台帐号下
* @Attention 该API用于将一个尚未绑定开放平台帐号的公众号或小程序绑定至指定开放平台帐号上。二者须主体相同。
*/
public void bindOpen() {
String appid = getPara("appId");
String open_appid = getPara("open_appid");
String target_appid = getPara("target_appid");
final String BIND_OPEN = "https://api.weixin.qq.com/cgi-bin/open/bind?access_token=" + getAuthorizerAccessToken(appid);
String result = HttpUtils.post(BIND_OPEN, Kv.set("appid", target_appid).set("open_appid", open_appid).toJson());
}

失败:我之前的绑定方式,,

  1. 通过小程序appid创建开放平台;
  2. 调用接口http://IP:Port/path/bindOpen?appId=小程序APPID&open_appid=开放平台账号&target_appid=公众号APPID

👆In a word,,使用 A 创建开放平台,然后使用 A 的access_token绑定 B。
报错{"errcode":40013,"errmsg":"invalid appid hint: [iAEcfA03241959]"}


成功:同事的绑定方式,,

  1. 使用公众号的appid创建开放平台账号;
  2. 调用接口http://IP:Port/path/bindOpen?appId=小程序APPID&open_appid=开放平台账号&target_appid=小程序APPID

👆In a word,,使用 A 创建开放平台,然后使用 B 的access_token绑定 B。

至此,,问题解决!另外,之前的问题也迎刃而解:公众号和小程序都需要将开放平台账号管理权限授权给第三方平台

想想也是,当初将小程序和公众号的权限授权给第三方平台时也是这样,,标的主动绑定平台,而不是平台主动绑定标的

One more thing

嗯,希望微信开放平台帐号管理完档越来月完善,,意味深长的微笑 🙂。