如何用 Python 实现微信公众号授权登录的网页签到?
直接给公众号回复 文字 签到,可以使用 itchat 模版来实现
但需要使用微信授权登录的网页签到,如何实现呢?
如何用 Python 实现微信公众号授权登录的网页签到?
7 回复
在公众号里发位置是不是可以,有 wchatpy 开源框架
要搞微信公众号网页授权登录并签到,得先搞定微信开放平台的配置和OAuth2.0流程。核心就是让用户访问一个URL,微信会回调你的服务器并带上code,再用code换access_token和用户信息。
首先确保你有认证服务号,并在微信公众平台配置了网页授权域名。然后安装requests库。
主要分三步:
- 生成授权URL,引导用户访问
- 处理微信回调,用code换token和用户信息
- 实现签到逻辑
import requests
from flask import Flask, request, redirect, jsonify
import time
app = Flask(__name__)
# 你的公众号配置
APP_ID = '你的appid'
APP_SECRET = '你的appsecret'
REDIRECT_URI = 'http://你的域名.com/callback' # 授权回调地址
@app.route('/login')
def wechat_login():
"""生成授权URL并重定向"""
auth_url = (
f"https://open.weixin.qq.com/connect/oauth2/authorize?"
f"appid={APP_ID}&redirect_uri={REDIRECT_URI}&response_type=code"
f"&scope=snsapi_userinfo&state=STATE#wechat_redirect"
)
return redirect(auth_url)
@app.route('/callback')
def callback():
"""微信回调处理"""
code = request.args.get('code')
if not code:
return "授权失败"
# 用code获取access_token
token_url = (
f"https://api.weixin.qq.com/sns/oauth2/access_token?"
f"appid={APP_ID}&secret={APP_SECRET}&code={code}&grant_type=authorization_code"
)
resp = requests.get(token_url).json()
access_token = resp.get('access_token')
openid = resp.get('openid')
if not access_token:
return f"获取token失败: {resp}"
# 获取用户信息
user_info_url = (
f"https://api.weixin.qq.com/sns/userinfo?"
f"access_token={access_token}&openid={openid}&lang=zh_CN"
)
user_info = requests.get(user_info_url).json()
# 这里实现签到逻辑
sign_result = do_sign(openid, user_info.get('nickname', ''))
return jsonify({
'status': 'success',
'user': user_info.get('nickname'),
'sign_result': sign_result
})
def do_sign(openid, nickname):
"""签到逻辑示例"""
# 这里应该连接数据库,记录签到
# 示例:返回签到成功信息
sign_date = time.strftime('%Y-%m-%d')
return {
'openid': openid,
'nickname': nickname,
'sign_date': sign_date,
'continuous_days': 1 # 示例连续签到天数
}
if __name__ == '__main__':
app.run(debug=True, port=5000)
注意几个关键点:
snsapi_userinfoscope能获取用户昵称头像,snsapi_base只能拿openid- 回调地址必须在公众号后台配置,且带http/https
- access_token有有效期,但签到一般用openid就够了
- 生产环境要用HTTPS,存储用户信息要加密
签到逻辑自己实现,比如用数据库记录openid和签到时间,判断连续签到。记得处理重复签到的情况。
总结:核心就是OAuth2.0授权流程加个签到逻辑。
其实就是一个外部网页签到,网站没开通公众号之前,可以使用 用户名+密码 模拟登录并签到,但现在网站方估计为了推广公众号,关闭了用户名登录,改为必须微信授权登录,所以也没办法模拟登录签到了。用浏览器打开网页,提示请在微信客户端内打开~~~
用 PC 微信打开链接
能否具体点? pc 微信打开链接,抓包的 用户 token 和微信 app 内抓包的 token 时效性应该是一样的吧? 这个 token 有效期很短,还是说用 itchat 来打开链接?
用 authing.cn
支持小程序扫码登录,你可以看看文档: https://docs.authing.cn/#/
有不明白的可以问我~


