如何实际操作公众号可以让小游戏在一定程度上裂变
优采云 发布时间: 2021-07-29 03:22如何实际操作公众号可以让小游戏在一定程度上裂变
微信公众号的两种开发模式
你可能有疑问?为什么要使用小号进行测试?其实微信公众号的开发有两种模式:
编辑模式:主要针对非程序员和信息发布公众号。开启此模式后,您可以通过界面轻松配置“自定义菜单”和“自动回复消息”。
开发模式:主要针对有开发能力的人。开启该模式后,您可以使用微信公众平台上开放的界面,通过编程实现自定义菜单的创建和用户消息的接收/处理/响应。这种模式比较灵活,建议有开发能力的公司或个人采用这种模式。
简单来说,不需要编写代码,直接在微信公众号网页上配置自定义菜单或自动回复。这称为编辑模式;您需要编写代码来实现自动回复或更高级的逻辑,这称为开发模式;而这两种模式是互斥的,即一旦开启了开发模式,编辑模式就失效了。之前配置的自定义菜单和自动回复都是无效的。这对于我现在的公众号来说是不能接受的,因为编辑模式是模式里面的配置太多了。迁移到开发者模式需要大量的时间和成本,其次不稳定,所以我想到了我的尘土飞扬的小号。
在正式开发之前,您需要有以下“纸”或“笔”:
一台服务器(华南、华北、华东、华西最佳位置)
一个有据可查的域名是最好的
服务器访问微信公众号
那么,在微信公众号的开发过程中,微信公众号后端就像一个代理服务器。微信公众号消息首先由微信公众号后端处理,然后转发到我们自己的服务器进行处理。这个过程我们必须遵循微信公众号的开发规范;那么,我们如何将微信公众号与我们自己的服务器连接起来呢?开发者接入微信公众平台进行开发,需要完成以下步骤:
填写服务器配置:填写URL(只支持80(http)和443(https)端口,开发者文档说是服务器域名,准确的说不是你的服务器域名,但是你服务器上的微信公众号转发消息的根路由)、Token(可以填写)和EncodingAESKey(可以自动生成),这两个参数可能只有在访问时才有用。它们是使用 sha1 加密来确保安全性的几个参数中的第二个。比较在意,这一步主要是注意网址的正确性。
验证服务器地址的有效性:点击验证按钮,网页会出现Token验证成功或失败的提示。
根据接口文档实现业务逻辑:这是我们手写代码的部分。
应用逻辑
有个坑需要填写,个人微信公众号无法获取用户的基本信息:昵称、头像等
获得这个权限需要认证,但是认证需要拿钱,但是我写的很烂
回到我们创作的初衷,涉及到个性化的预测海报。我将简单地处理个性化部分,只是随机字符串。深入挖掘,需要个性化推荐,但没有用户信息,是不是要写点逻辑?用户丢了兴趣又回来了?这已经超出了本次创作的初衷,下次补上。
至于制作海报,我使用PIL库中的ImageDraw对象,直接在预设海报上填写字符串即可。
PIL 库的安装姿势是 pip install Pillow 而不是 pip install PIL
然后应用服务器使用Flask框架(Flask是应用框架,nginx是web服务器,都是软件,Flask自己的生产环境服务器不足以支持实际应用,需要uwsgi应用服务器,nginx直接处理静态资源请求,逻辑请求转发给uwsgi;阿里云服务器是一个虚拟化的PC,包括软硬件;
回到正题,假设我们的根路由是
我们可以给这个路由绑定一个视图函数my_view(),同时打开开关处理post请求(默认只处理get)。我们所有的逻辑都可以通过这个视图函数来实现,并连接到公众号进行开发 当通过get方法向我们的服务器请求Token验证公众号时,验证后转发的消息通过post方法,那么我们就可以通过请求方式区分是验证还是转发。
f request.method == ‘GET’:
signature = request.args[‘signature’]
timestamp = request.args[‘timestamp’]
echostr = request.args[‘echostr’]
nonce = request.args[‘nonce’]
token = ‘我要爱这个世界’
tempList = [令牌、时间戳、随机数]
#字典顺序排序
tempList.sort()
#转成字符串
tempStr = ”.join(tempList)
#sha1 加密
tempStr = hashlib.sha1(tempStr.encode(‘utf-8’)).hexdigest()
如果 tempStr == 签名:
print('令牌验证成功')
返回 echostr
其他:
#可以发现之前的验证码其实无关紧要,只要返回echostr就验证成功
返回 echostr
elif request.method == ‘POST’:
print('在这里写业务逻辑')
我们还需要调用我们服务器上的微信接口。比如海报制作完成后,通过微信转发给用户,不能直接返回图片的二进制数据。事实上,这是由微信公众号完成的。我们需要上传发送海报到微信公众号素材库,获取海报的id,然后封装成xml数据返回给微信公众号(吐槽还没有升级成json交换数据) ,以便用户收到我们的海报。
问题就在这里。将海报上传至微信公众号素材库。我在公众号文章编辑界面已经很久了。我以为我必须手动上传它。幸运的是,我找到了接口1,我们可以在服务器上调用它。这个接口1,为了防止这个接口1被滥用,必须提供access_token,但是access_token是从哪里来的呢?需要调用另一个接口2,接口2需要提供AppId和AppSecret参数。如果不自己修改,这两个长期有效,可以直接获取。
接口 1:POST
接口 2:获取
另一个陷阱是这个access_token的有效期只有2个小时,所以需要不断更新,所以需要在我们的Flask中引入循环任务配置
#定时任务配置类Config(object):#创建配置
#任务列表
工作 = [
{
‘id’: ‘1’,
'func': '__main__:refreshToken', # 定时执行的方法名
'trigger': 'interval',#interval 表示循环任务
'hours': 2, # 每两小时执行一次
}
]
app.config.from_object(Config()) # 为实例化的flask引入配置
亿奇达积累了10年的行业经验!专业小程序,公众号H5、APP定制开发
来电即刻享受优惠
点击获取报价