前言

最近接了个小需求,有点意思,写个博客~

需求内容:我们有一个游戏抖音号,需要对发私信给我们的用户自动回复一个激活码字符串

功能很简单,但是面对抖音这个第三接口文档写的一坨翔且找不到技术客服的大公司,还是死了不少脑细胞。

(备注:没有后端开发经验的朋友,这篇文章可以略过了,因为需要自己写监听接口以及部署和配置nginx)

~

~

闲话不多说了,先讲流程:

第一步:

首先,这个功能只支持验证过的企业抖音号,so~ 个人抖音号就不要想了,

另外你最好有一个云服务器和一个可以用的域名以及https证书。

以上东西准备好,先登录抖音开放平台:抖音开放平台地址

然后创建个账号或者用抖音号去登录。

然后点击管理中心,去创建一个应用

内容随便填吧,审核还是比较宽松的,但是务必填写真实有效。

###

创建完之后,预计1-3个工作日审核,审核通过后你就能看到你的应用了。

###

点击详情,进入查看,以下是我的应用详情:

注意互动管理中的获取并管理评论和私信,这个权限状态是已通过,没通过的要申请下等带审核。

###

然后你要做的就是根据client_key和client_secret两个参数去获取open_id和access_token。

案例链接如下:

https://open.douyin.com/platform/oauth/connect?client_key=aw7k41dqsr8udns2&response_type=code&scope=video.comment,im,aweme.share,user_info,video.create,video.delete,video.data,video.list,enterprise.im,enterprise.data&redirect_uri=http://baidu.com&state=aHR0cDovL3oxLWNvbnNvbGU2LWxsQmxhY23t=

把上面这个链接内容改一下,第一个client_key换成你的应用,redirect_url改成你创建应用时的那个(一定要是可以访问的域名),可以在基础信息里面看授权域回调,state我们这随便填个长点字符串就好了,具体功能见抖音开发文档。

链接修改完后复制到浏览器打开(出于保密,我的url里信息都是虚拟的,你们不要尝试)

打开后是一个二维码页面:

###

用你的企业抖音号扫码授权,授权成功会重定向到一个新的页面,千万不要关闭!!!这个页面的url会附带上一个code参数,记得复制保存,后面用的上。

###

接下来我们拿着这个code值去获取open_id和access_token。

代码直接给你贴上,把三个参数替换成你应用的值:

import requestsclient_key = 'awkjaslkdjv7dns2'
client_secret = 'oiahsdoihi32j0jdo2jd23jjd02'
code = 'askjdhioh23oijisdfkjasd'headers = {"Content-Type": "application/json","Accept": "application/json", }# 获取access_token
def get_access_token():data = {"client_key": client_key,  # 应用唯一标识"client_secret": client_secret,  # 应用唯一标识对应的密钥"code": code,  # 扫码后获取的授权码"grant_type": "authorization_code",  # 默认"authorization_code"即可}url = "https://open.douyin.com/oauth/access_token/"res = requests.get(url=url, headers=headers, params=data)print(res.json())if __name__ == '__main__':get_access_token()

返回值案例: 

{"data":{"access_token":"act.11913a0bf8c24c154544887291833618d0sZuFLjrTfdzWFKdQ0wRv85xG6YEX","captcha":"","desc_url":"","description":"","error_code":0,"expires_in":1296000,"open_id":"b715c9c8-2897-4788-8591-72fb598f0195","refresh_expires_in":2592000,"refresh_token":"rft.64e06c379c3f5bad3e42f918ced40671MiV8ZKf60HzuvjjiQfsyJbktfOZ3","scope":"video.comment,im,aweme.share,user_info,video.create,video.delete,video.data,video.list,enterprise.im,enterprise.data"},"message":"success"}

取出access_tokenopen_id的值,复制 留有大用!

###

接下来返回抖音开放平台,从管理中心进入应用的详情。

监听接口配置好(接口代码待会附上),验证通过后,Webhooks里的订阅时间全部拉满就行了

关于这个监听接口,我简单说下:

抖音开放平台第一次会给你这个监听url发送一个post请求来验证是否可用,然后验证通过后才算配置完成。

开放平台发送的验证请求示例(具体去抖音开放文档看):

{"event": "verify_webhook","client_key": "","content": {"challenge": 12345}
}

当你收到开放平台 POST 验证请求时,你需要解析出 challenge 值,并立即返回该 challenge 值作为响应。

{"challenge": 12345
}

我这边监听接口的代码如下:(接口服务部署以及nginx配置域名你们自己去百度吧)

from flask import Flask, requestapp = Flask(__name__)# 处理中文编码
app.config['JSON_AS_ASCII'] = False# 跨域支持
def after_request(resp):resp.headers['Access-Control-Allow-Origin'] = '*'return respapp.after_request(after_request)#  抖音监听接口
@app.route("/ceshi", methods=["GET", "POST"])
def getMsg_ceshi():try:if request.method == "POST":json_data = request.get_json()event = json_data.get("event")# 验证if event == "verify_webhook":CHALLENGE = json_data.get("content").get("challenge")return {"challenge": CHALLENGE}# 接收私信elif event == "receive_msg":from_user_id = json_data.get("from_user_id")to_user_id = json_data.get("to_user_id")client_key = json_data.get("client_key")message_type = json_data.get("content").get("message_type")message_info = json_data.get("content").get("text")try:# 将用户消息存入数据库(我就省略不写了)passexcept BaseException as e:print("插入失败:", e)else:return {"respCode": '204', "data": "", "message": "未知事件类型,暂不处理"}else:return {"respCode": '203', "data": "", "message": "不支持get请求"}except:return {"respCode": '503', "data": "", "message": "处理失败"}if __name__ == "__main__":app.run(host='0.0.0.0', port=8008, debug=True)

关于这个接口的功能我简单说下,

当你在Webhooks配置监听url时,他会发送一个验证请求,所以event=='verify_webhook'代表在响应这个验证。

验证通过后,你就能收到别人给你的企业抖音号发送私信了,此时event=='receive_msg',这个时候你要做的就是把内容存到mysql数据库,以便后面使用。

然后,接下来的事就简单了,去数据实时读取这些私信然后一一回复,

回复功能的代码我也贴出来:

import requests
import jsonopen_id = "0f8a8952-4f85-46ba-9b1c-ff3bbfd23a31"
access_token = "act.298f6a0edb2b95a8ee1d0d123scd4b0fVRCiHmYgEIt2i3yYGr7GuTZ0XGKp"headers = {"Content-Type": "application/json","Accept": "application/json", }# 发送私信给用户
def seed_message_info(to_user_id):params = {"open_id": open_id,"access_token": access_token,}data = {"to_user_id": to_user_id,  # 用户唯一标识,用户发私信给你,你的接听接口会收到这个值"message_type": "text",  # 默认文本类型"persona_id": "",  # 客服id,传则走客服会话,否则为普通会话"content": '{"text":"哎呀,卧槽"}',"client_msg_id": ""}url = "https://open.douyin.com/enterprise/im/message/send/"res = requests.post(url=url, headers=headers, params=params, data=json.dumps(data))print(res.text)if __name__ == '__main__':seed_message_info("223cacdd-4afd-40ac-9cfa-b1c94b158834")

哎呀,腰身背疼,剩下的自己悟吧,不写了

基于python的flask框架自动回复抖音私信相关推荐

  1. python生成json接口_基于python的Flask框架写json接口并且结合eolinker进行接口测试

    一.前言 很多时候为了提高软件开发的效率,后端程序人员理想状态下应该编写程序测试接口供前端程序人员进行测试,以便前端的开发.笔者由于项目的需求近期尝试学习了一下测试接口的编写,以Python+Flas ...

  2. 基于Python的Flask框架开发的在线电影网站系统(附源码)

    来源丨网络 今天给大家分享的是基于Python的Flask框架开发的在线电影网站系统. 项目介绍 项目介绍:网站前端采用HTML5编写,使用Bootstrap前端开发框架,后端使用Python3语言编 ...

  3. 基于Python的Flask框架实现的寻宝通关游戏 课程论文+项目源码

    资源下载地址:https://download.csdn.net/download/sheziqiong/85705658 资源下载地址:https://download.csdn.net/downl ...

  4. Python——使用Flask框架封装接口

    Python--使用Flask框架封装接口 引言 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开发 ...

  5. python的flask框架显示柱状图_使用Python的Flask框架,结合Highchart,动态渲染图表...

    服务端动态渲染图表 参考文章链接:https://www.highcharts.com.cn/docs/dynamic-produce-html-page 参考文章是使用php写的,我这边改用pyth ...

  6. python上手--flask框架web开发实践-数据库

    这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...

  7. 基于python 开发 微信机器人自动回复 app

    基于python 开发 微信机器人自动回复 app # coding:utf-8 __author__ = "zhou" # create by zhou on 2020/3/3 ...

  8. python之 flask 框架

    创建安装虚拟环境 两种方法 第二种 # 先打开cmd 中断 # 查看virtual是否安装过 pip show virtualenv # 安装 pip install virtualenvwrappe ...

  9. Python 使用 Flask框架记录

    Python 使用 Flask框架记录 1.安装Flask ​ Flask依赖两个外部库,Werkzeug和Jinja2,Werkzeug是一个WSGI(服务器网关接口).Jinja2时负责渲染模板. ...

最新文章

  1. 大数据项目产品选型的五个建议
  2. CentOS进不了系统
  3. FFMPEG音视频同步-音视频实时采集并编码推流-优化版本
  4. 2020版北大中文核心期刊目录_收藏备用最新版:《中文核心期刊要目总览》北大中文核心期刊目录...
  5. centos7安装svn客户端和使用
  6. 杭州某知名xxxx公司急招大量java以及大数据开发工程师
  7. ASP.NET 使用C#代码设置页面元素中的样式或属性
  8. 规定时间内,将浏览次数增加且只增加一次
  9. hadoop启动_hadoop服务快速部署
  10. 点击按钮跳转页面_获取快手主页跳转url scheme 协议的方法(app通用方法)
  11. 执行挂起状态线程的终止与暂停
  12. Android MVP架构手绘图
  13. 给大家推荐几个查找芯片手册的网址,超级全建议收藏
  14. 2021/3/30前端百度笔试题
  15. MYSQL设置初始密码
  16. 大拇指全程报导苹果发布会2014.9.9
  17. 四阶龙格库塔方程(Rungekutta)解二阶常微分方程组并计算船舶在迎浪下的纵摇埀荡耦合运动方程-附Matlab代码
  18. 计算机如何授权访问局域网,局域网权限怎么设置?局域网访问权限设置软件哪个好...
  19. 修改KindEditor上传图片数量和大小
  20. 狄利克雷过程(dirichlet process )和分布

热门文章

  1. 用css3 3d效果做一个立体盒子
  2. 公司HP-EVA4400存储硬盘离线数据恢复方法
  3. scratch双语教师课件文档手册 3.scratch桌面舞台坐标系
  4. ATF官方文档翻译(二):Authentication Framework Chain of Trust(身份验证框架和信任链)(3)
  5. 顾问风采 | LF AI Data 基金会完成换届,堵俊平担任董事会主席、星爵担任会员总代表...
  6. 零基础入门,想问一下华为认证的网络工程师证好考吗?
  7. Java多线程游戏实例分享2-雷火(手把手教你做个超炫酷的星际争霸)
  8. 【python实例】判断是否为酒后驾车
  9. 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制
  10. 为什么wps数字前面有撇号_excel表格中数据前有撇号-Excel 如何去除数字前面的撇号...