微信开发相关记录

本文讨论的是微信开发相关的一些记录,算是个人留存备用,其中部分内容可能是AI给出的答案,仅供参考。

微信开发相关记录

问题1

微信开放平台,公众平台,公众号,小程序,小游戏等的关系

一、两个核心平台:开放平台 vs 公众平台

两者都是微信提供的开发者服务平台,但服务对象和功能侧重不同:

1. 微信开放平台(open.weixin.qq.com
  • 定位:面向所有开发者的综合性开放平台,提供跨产品的账号体系、支付能力、分享能力等基础能力。
  • 核心功能
    • 统一管理多个微信生态产品(公众号、小程序、小游戏、移动应用等)。
    • 提供「微信登录」「微信分享」「微信支付」等跨产品的通用接口(如 code2session 接口用于获取用户标识)。
    • 支持第三方平台接入(如为其他商户提供代开发服务)。
  • 关键词:跨产品、账号打通、基础能力开放。
2. 微信公众平台(mp.weixin.qq.com
  • 定位:专门用于管理「公众号」「小程序」「小游戏」的运营和开发平台。
  • 核心功能
    • 管理单个公众号/小程序/小游戏的内容发布、用户互动、数据分析等。
    • 提供针对具体产品的开发接口(如公众号的自定义菜单、小程序的页面开发)。
    • 配置产品的基本信息(如 AppID、权限设置、服务器域名等)。
  • 关键词:单产品管理、运营+开发工具。
二、具体产品:公众号、小程序、小游戏等

这些是微信生态中面向用户的具体产品形态,需要通过上述平台进行创建和管理:

1. 公众号
  • 形态:基于微信内的图文内容推送平台,类似「订阅号」或「服务号」。
  • 用途
    • 订阅号:偏向内容传播(如媒体、自媒体),每天可发1条推文。
    • 服务号:偏向功能服务(如企业、政务),每月可发4条推文,支持更多接口(如微信支付)。
  • 开发:可通过公众平台开发自定义菜单、自动回复、网页授权(获取用户信息)等功能。
2. 小程序
  • 形态:无需下载安装的轻量级应用,在微信内即可打开使用。
  • 用途:提供丰富的功能服务(如电商、工具、政务服务等),支持原生App级别的交互体验。
  • 开发:通过公众平台创建,使用微信提供的小程序框架(如微信开发者工具)开发,可调用微信的硬件能力(摄像头、定位等)和开放接口(支付、登录等)。
3. 小游戏
  • 形态:基于小程序技术的游戏应用,属于小程序的一个细分品类。
  • 特点:轻量级、即点即玩,支持社交分享(如好友对战、排行榜)。
  • 管理:通过公众平台创建和管理,需遵守微信的游戏内容规范。
其他产品
  • 移动应用:指独立的App(如手机客户端),可通过开放平台接入微信登录、分享等能力。
  • 公众号网页应用:在公众号内打开的H5网页,可通过公众号的网页授权能力获取用户信息。
三、核心关系总结
  1. 平台与产品的关系

    • 开放平台是「总控制台」,可统一管理公众平台的产品(公众号、小程序等)及其他应用(如移动App)。
    • 公众平台是「分控制台」,专注于管理公众号、小程序、小游戏的日常运营和开发。
  2. 产品间的关系

    • 公众号、小程序、小游戏都是微信内的用户产品,可独立存在,也可相互关联(如公众号菜单跳转小程序)。
    • 它们共享微信的基础能力(如用户体系、支付),但功能侧重不同(内容、服务、游戏)。
  3. 开发者视角

    • 若需开发小程序/公众号/小游戏,先通过「公众平台」创建产品,获取AppID和开发权限。
    • 若需实现跨产品功能(如用微信登录自家App和小程序),需在「开放平台」绑定所有产品,实现账号打通。

问题2

A游戏和B游戏,如果我都绑定到同一个开放平台账号,那同一个微信账号登录A、B两个游戏,甚至A、B两个游戏在各端(Android、iOS、小游戏)登录,是不是unionid都一样?

是的。unionid 的生成逻辑:unionid仅与 “同一微信用户 + 同一开放平台账号” 两个维度强绑定,和应用类型(游戏 / 小程序)、终端(Android/iOS/ 小游戏)、AppID 均无关。


问题3

如果是同一款游戏,比如王者荣耀,出了Android版本,也出了iOS版本,还有小游戏版本。那三端在微信的appid是同一个吗?如果是同一个,那同一个微信用户在三端登录openid一样吗?

1、三端的微信 AppID 一定是不同的。微信生态中,不同形态的产品 / 不同端的应用,必须使用不同的 AppID。

产品类型维度:小游戏属于「小程序 / 小游戏」品类,有专属的 AppID(公众平台创建);Android/iOS 版本属于「移动应用」品类,有专属的 AppID(开放平台创建)—— 这两类 AppID 的创建入口、类型标识完全不同,无法共用。
端维度:即使是同一类产品(比如都是移动应用),微信也不会要求 Android 和 iOS 用同一个 AppID(实际开发中也会分开创建,方便分别配置权限、回调地址等)。

2、openid 不同
openid 的生成规则是「微信用户 + 单个 AppID」,只要 AppID 不同,即使是同一个用户、同一款游戏的不同端,openid 也会不同。


问题4

如何实现 “三端用户数据打通”?
这也是游戏厂商的核心需求,解决方案就是unionid:
把小游戏 AppID、Android AppID、iOS AppID全部绑定到同一个微信开放平台账号;
用户在任意一端登录并授权后,即可获取unionid(同一用户在这三个 AppID 下的 unionid 完全相同);
游戏后台以unionid作为用户的唯一标识,关联三端的 openid 和游戏数据,实现 “三端互通”。