python实现网页微信登陆_(转帖)网站微信登录-python 实现
最近微信登录开放公测,为了方便微信用户使用,我们的产品也决定加上微信登录功能,然后就有了这篇笔记。
根据需求选择相应的登录方式
微信现在提供两种登录接入方式
移动应用微信登录
网站应用微信登录
这里我们使用的是网站应用微信登录
1 注册并通过开放平台开发者资质认证
注册微信开放平台帐号后,在帐号中心中填写开发者资质认证申请,并等待认证通过。
2 创建网站应用
通过填写网站应用名称、简介和图标,以及各平台下载地址等资料,创建网站应用
3 接入微信登录
在资源中心查阅网站应用开发文档,开发接入微信登陆功能,让用户可使用微信登录你的网站应用
如果已经完成上面的操作,请继续往下看
微信网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。
微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为:
第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
通过code参数加上AppID和AppSecret等,通过API换取access_token;
通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
具体流程请参考官方文档,我们这里只说一下python的实现方法。官方文档地址 点这里
参考python-instagram 我写了一个 python-weixin (https://github.com/zongxiao/python-weixin)一个微信python SDK
不过现在还只有微信接入、获取用户信息、 刷新refresh_token 等简单功能
首先 需要把代码clone到本地
然后执行
python setup.py install
使用方式非常简单
1 from weixin.client importWeixinAPI
2
3 APP_ID = 'your app id'
4 APP_SECRET = 'your app secret'
5 REDIRECT_URI = 'http://your_domain.com/redirect_uri' #这里一定要注意 地址一定要加上http/https
6
7 scope = ("snsapi_login", )
8 api = WeixinAPI(appid=APP_ID,
9 app_secret=APP_SECRET,
10 redirect_uri=REDIRECT_URI)
11
12 authorize_url = api.get_authorize_url(scope=scope)
现在将
authorize_url 地址在浏览器打开, 将跳转到微信登录页面,使用手机扫码登录后将跳转到
http://your_domain.com/redirect_uri?code=CODE&state=STATE 页面
现在我们就可以使用code 来获取登录的 access_token
access_token = api.exchange_code_for_access_token(code=code)
access_token 信息为
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"}
参数说明
access_token
接口调用凭证(有效期目前为2个小时)
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token(有效期目前为30天)
openid
授权用户唯一标识
scope
用户授权的作用域,使用逗号(,)分隔
获取access_token后,就可以进行接口调用,有以下前提:
access_token有效且未超时;
微信用户已授权给第三方应用帐号相应接口作用域(scope)。
对于接口作用域(scope),能调用的接口有以下:
授权作用域(scope)接口接口说明
snsapi_base
/sns/oauth2/access_token
通过code换取access_token、refresh_token和已授权scope
/sns/oauth2/refresh_token
刷新或续期access_token使用
/sns/auth
检查access_token有效性
snsapi_userinfo
/sns/userinfo
获取用户个人信息
api = WeixinAPI(appid=APP_ID,
app_secret=APP_SECRET,
redirect_uri=REDIRECT_URI)
#刷新或续期access_token使用
refresh_token = api.exchange_refresh_token_for_access_token(refresh_token=auth_info['refresh_token'])
api = WeixinAPI(access_token=auth_info['access_token'])
#获取用户个人信息
user = api.user(openid=auth_info['openid'])
#检查access_token有效性
v = api.validate_token(openid=auth_info['openid'])
现在就微信登录就完成了
下面是用 flask 实现的完整的例子
from flask importFlask
from flask importMarkup
from flask importredirect
from flask importrequest
from flask importjsonify
from weixin.client importWeixinAPI
from weixin.oauth2 importOAuth2AuthExchangeError
app = Flask(__name__)
APP_ID = 'appid'APP_SECRET = 'app secret'REDIRECT_URI = 'http://localhost.com/authorization'@app.route("/authorization")
defauthorization():
code = request.args.get('code')
api = WeixinAPI(appid=APP_ID,
app_secret=APP_SECRET,
redirect_uri=REDIRECT_URI)
auth_info = api.exchange_code_for_access_token(code=code)
api = WeixinAPI(access_token=auth_info['access_token'])
resp = api.user(openid=auth_info['openid'])
returnjsonify(resp)
@app.route("/login")
deflogin():
api = WeixinAPI(appid=APP_ID,
app_secret=APP_SECRET,
redirect_uri=REDIRECT_URI)
redirect_uri = api.get_authorize_login_url(scope=("snsapi_login",))
returnredirect(redirect_uri)
@app.route("/")
defhello():
return Markup('weixin login!') % '/login'
if __name__ == "__main__":
app.run(debug=True)
参考链接:
python实现网页微信登陆_(转帖)网站微信登录-python 实现相关推荐
- python制作网页的步骤_使用httplib模块来制作Python下HTTP客户端的方法
httplib 是 python中http 协议的客户端实现,可以使用该模块来与 HTTP 服务器进行交互.httplib的内容不是很多,也比较简单.以下是一个非常简单的例子,使用httplib获取g ...
- python打印皮卡丘步骤_编程作战丨如何利用python绘制可爱皮卡丘?
好莱坞真人电影<精灵宝可梦:大侦探皮卡丘>预告片已经发布了,正片将于今年5月10日上映. 如果要做一个「童年梦想排行榜」的话,相信「拥有一只皮卡丘」这个梦想一定会名列前茅! 毕竟,谁不想揉 ...
- python打开网页并输入数据_使用Python登陆网站读取表格数据
近期有经常使用的数据,需要登陆到某个网站,将其中的表格数据读取出来,为了提高效率节省工作时间,决定写一个程序,使用Python自动登陆到该网站然后将某日(参数)的数据读取并存放于excel表格中. 1 ...
- python的网页解析器_网页解析器(BeautifulSoup)-- Python
分享一下关于 Python的网页解析器(BeautifulSoup) BeautifulSoup解析器 为了实现解析器,可以选择使用正则表达式.html.parser.BeautifulSoup.lx ...
- python制作网页难吗_怎么做网页制作(用python做网页与html)
想要做一个大型的网站,必须拥有较强的网站设计能力,而且photoshop.flash.Cool 3d.Gif Animator等网页制作的辅助工具必须都懂,数据库是网站的强大支持,因此,数据也需要懂. ...
- python模拟淘宝登陆_【Python】selenium模拟淘宝登录
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By f ...
- python创建类统计属性_轻松创建统计数据的Python包
python创建类统计属性 介绍 (Introduction) Sometimes you may need a distribution figure for your slide or class ...
- python怎么复数乘方开方_运维必须掌握的 Python 宝典:值得每天复习一遍
前言 本文旨在更好地总结 Python 基础知识,力求简明扼要,以供实战演练时能够快速查询遗忘的知识点. 学一门语言贵在坚持用它,不用就淡忘了,而记录下一篇文章也有助于日后快速回忆.全文分为两大部分, ...
- python转go感觉难_读《我为什么从python转向go》的一些感受
一开始我以为是一篇2013年的老帖子,没想到竟然是2015年.不懂Python不要乱喷啊.你直接说"我不懂Python,我也不愿意维护前任写的糟糕代码,我Go牛B,所以我要重构一遍!&quo ...
- python运用在哪些地方_必看 | 2020年,Python十大应用领域介绍!
原标题:必看 | 2020年,Python十大应用领域介绍! python作为一门当下极其火爆的编程语言,得到世界范围内无数编程爱好者和开发者喜欢并不是偶然的,除了要比其他编程语言更容易入门,pyth ...
最新文章
- 996.icu 不加班的程序员有前途吗?
- C#通过工厂模式,我把一大堆if干掉了
- 前端学习(2937):vue对象之间的实例属性
- Python 中argparse模块的使用
- JAVA动态绑定浅析
- 免疫算法(Immune Algorithm,IA)实例详解
- 如何在手机上快速制作小一寸证件照
- Flutter发送表情接收表情库
- 阵列天线方向图-均匀直线/平面阵列matlab仿真
- 关于Opencv出现的错误“ 0x000007fefdf6a06d (KernelBase.dll) Microsoft C++ 异常的几种尝试解决方式
- appcan 文件下载到根目录(pdf)
- JavaScript:实现ROT13密码算法(附完整源码)
- 计算机睡眠重启后无法识别网络,教您一招解决电脑休眠唤醒后无法使用USB键盘的操作方法...
- java下载Excel文件并设置表头内容与下拉框
- vue-cli · Failed to download repo vuejs-templates/webpack-simple: tunneling socket could not be esta
- 代数基础 | Kronecker积
- mac备忘录 英文引号自动转中文引号
- Activiti7笔记(二)Activiti7一共涉及到25张表,哪些操作会涉及哪些表,每张表的作用是什么
- mysql驱动下载mac
- 微信小程序——页面之间传递值
热门文章
- python打开rar_使用Python解压zip、rar文件
- 中兴新支点操作系统_中兴新支点国产操作系统体验报告:使用流畅,性能稳定!...
- 中兴新支点操作系统——背景、徽标大起底
- 如何提高团队的研发效率呢?
- 日常网页bug页面收集
- IPS和IDS的区别
- Photoshop脚本 图层的栅格化
- 易基因|干货:m6A RNA甲基化MeRIP-seq测序分析实验全流程解析
- 多维多重背包问题_多重选择背包问题,multiple choice knapsack problem,音标,读音,翻译,英文例句,英语词典...
- 错误变惊喜,10个有趣的404页面设计(转)