最近微信登录开放公测,为了方便微信用户使用,我们的产品也决定加上微信登录功能,然后就有了这篇笔记。

根据需求选择相应的登录方式

微信现在提供两种登录接入方式

移动应用微信登录

网站应用微信登录

这里我们使用的是网站应用微信登录

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 importWeixinAPI2

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 importFlaskfrom flask importMarkupfrom flask importredirectfrom flask importrequestfrom flask importjsonifyfrom weixin.client importWeixinAPIfrom 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 实现相关推荐

  1. python编写网页游戏脚本_[大数据]用Python脚本做一些网页游戏中力所能及的自动化任务 - 码姐姐找文...

    下面是一段自动登录360传奇霸业游戏的脚本: from pymouse importPyMouseimporttimeimportwebbrowserfrom pykeyboard importPyK ...

  2. 【系统自动化开发】Python实现广东省公务员报名系统网站自动登录

    [系统自动化开发]Python实现广东省公务员报名系统网站自动登录 [系统自动化开发]Python实现广东省公务员报名系统网站自动登录 一.原理 二.代码 [系统自动化开发]Python实现广东省公务 ...

  3. python实现微信登录破解版_网站微信登录-python 实现

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 最近我们的网站要加微信登录功能,找了python sdk 感觉都不满意,然后就参考instagram pyth ...

  4. python图灵机器人微信号_个人微信接入图灵机器人(基于Python)

    开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...

  5. 微信运动_刷步思路+Python源码+云部署(持续更新)_一蓑烟雨任平生

    文章目录-3.x版本 前言 一.思路 二.电脑发数据(碰壁) 三.使用手机抓包 四.部署云函数(阿里,腾讯都可以) 1.登录阿里云 2.配置函数 3.执行代码 4.设置定时 废话不多说了,直接上脚本吧 ...

  6. java微信 扣扣登录_转载微信小程序实现微信登录(Java后台)

    作者:Aoess丶 原文:https://blog.csdn.net/yan245294305/article/details/84993265 这两天在自己的小项目中加入了微信小程序的很多功能,今天 ...

  7. python做一个网页多少钱_网站建设平台_ 网站建设多少钱_ _做一个企业网站需要多少钱_64岁的Python之父表示退休后太无聊 正式加入微软...

    按照TIOBE发布的2020年11月编程语言排行版,Python首次高出了Java成为全球第二受接待的编程语言.近些年,跟着人工智能的飞速成长,Python已成为最受接待的编程语言之一.作为Pytho ...

  8. 微信PC端网站 微信扫码登陆

    各种概念 1. 微信公众号开发平台,指的是mp.weixin.qq.com,也是公众号管理的平台,里面有一个开发者中心,开启后,才可以制作和自己网站有联系的功能,例如调用网站的用户信息等. 2. 微信 ...

  9. python网页编程测试_李亚涛:python编写友情链接检测工具

    原标题:李亚涛:python编写友情链接检测工具 友情链接是网站外链的非常重要的来源,作为一个网站运营推广人员,需要定期对网站的友链进行更新与检查,如果有人下掉你的链接,这样你可以及时的检测并清除掉. ...

最新文章

  1. 在 Ubuntu 下安装 Discuz! 7.0
  2. GPT-2大战GPT-3:OpenAI内部的一场终极对决
  3. 汉诺塔python实现_汉诺塔问题深度剖析(python实现)
  4. 【转载】用 PHP V5 开发多任务应用程序
  5. MySQL 性能 细节 考量 (更新中......)
  6. linux强制格式化,linux – 如何格式化ifconfig的输出
  7. iOS Hacker Xcode7免登录开发者账号打包ipa
  8. NET问答:在 Linq 查询中可以处理异常吗?
  9. 和aes相比较有哪些特点_“黑枸杞”和“红枸杞”相比较,功效方面究竟存在哪些差别?...
  10. 高清网络视频无损FLV教程
  11. ERP 系统数据库设计规范
  12. 流(stream)是怎么一回事
  13. KMP算法的C++实现
  14. 华为悦盒烧写Ubuntu系统刷机教程
  15. contiki 操作教程
  16. MySQL 的统计直方图
  17. 离散数学中 集合、关系、群 的证明方法(英文证明附例题)
  18. 华为云防火墙-firewall 打开关闭
  19. Postgis源码编译
  20. 1028 人口普查(C语言)

热门文章

  1. 11返场钜惠,格式转换、图片/视频压缩免费小技巧
  2. h5实现类似淘宝评价选择标签
  3. MSDN不能使用,提示“无法打开文档资源管理器”
  4. 金蝶使用mysql_金蝶财务软件中的数据库如何进入?
  5. ABP VNext学习日记4
  6. 元素地牢服务器维修,《元素地牢》已正式开服!劝退地牢等你挑战!
  7. I2C的七宗罪——I2C使用中的坑
  8. 不懂SpringApplication生命周期事件?那就等于不会Spring Boot嘛
  9. 5个常常被大家忽略的Python小技巧
  10. 写作分享|向SCI期刊投稿时使用什么邮箱比较好?