导读:本期聚焦于小伙伴创作的《Django微信登录怎么做?OAuth2.0获取openid与用户信息实战教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Django微信登录怎么做?OAuth2.0获取openid与用户信息实战教程》有用,将其分享出去将是对创作者最好的鼓励。

在Django项目中接入微信登录,本质是利用微信开放平台提供的OAuth2.0授权码模式,让用户在微信侧确认授权后,我们的后端通过code换取access_token与openid,再按需拉取昵称、头像等用户信息。下面直接看具体实现方式。

Django微信登录怎么做?OAuth2.0获取openid与用户信息实战教程

一、前置准备与配置

你需要到微信开放平台创建网站应用,拿到appidappsecret,并配置授权回调域名。在Django的settings.py里保存这些配置:

# settings.py
WECHAT_APPID = 'your_appid'
WECHAT_APPSECRET = 'your_appsecret'
WECHAT_REDIRECT_URI = 'https://ipipp.com/wechat/callback/'

二、构造授权链接获取code

前端或视图中将用户重定向到微信授权地址,scope用snsapi_userinfo可拿详细信息:

# views.py
from django.conf import settings
from django.shortcuts import redirect

def wechat_login(request):
    appid = settings.WECHAT_APPID
    redirect_uri = settings.WECHAT_REDIRECT_URI
    # 注意redirect_uri需要urlencode,这里简化示意
    url = ('https://open.weixin.qq.com/connect/qrconnect?appid=%s'
           '&redirect_uri=%s&response_type=code&scope=snsapi_userinfo'
           '&state=django#wechat_redirect') % (appid, redirect_uri)
    return redirect(url)

三、回调中用code换openid与access_token

微信回调我们的地址并带上code,后端请求接口换取凭证:

# views.py
import requests
from django.http import JsonResponse

def wechat_callback(request):
    code = request.GET.get('code')
    appid = settings.WECHAT_APPID
    secret = settings.WECHAT_APPSECRET
    token_url = ('https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s'
                 '&secret=%s&code=%s&grant_type=authorization_code'
                 % (appid, secret, code))
    resp = requests.get(token_url).json()
    openid = resp.get('openid')
    access_token = resp.get('access_token')
    # 下一步用这两个值拉取用户信息
    return JsonResponse({'openid': openid})

四、获取用户信息并完成登录

拿到access_token和openid后,调用用户info接口,并在本地User模型里绑定openid实现自动登录:

# views.py 续写
def get_user_info(access_token, openid):
    info_url = ('https://api.weixin.qq.com/sns/userinfo?access_token=%s'
                '&openid=%s&lang=zh_CN' % (access_token, openid))
    data = requests.get(info_url).json()
    return data  # 包含nickname、headimgurl等

# 在wechat_callback中调用并绑定
# user, created = User.objects.get_or_create(username=openid)
# user.nickname = data.get('nickname')
# user.save()

五、注意事项

  • 回调域名不要带http前缀,只填域名。
  • code五分钟内有效且只能使用一次。
  • access_token接口每日调用限额,注意缓存。
如果做公众号网页授权,把qrconnect换成authorize,其余OAuth2.0流程一致。

Django微信登录OAuth2_0openid用户信息修改时间:2026-07-25 03:15:20

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。