python获取微信用户基本信息

来源:互联网 发布:商陆花软件是什么 编辑:程序博客网 时间:2024/06/06 01:36

python获取微信用户基本信息

今天把微信常用的一些基本知识整理了一下,发现以前用Java调取的微信用户信息照样可以用python来完成,而且代码量很少,个人觉得比Java简洁明了多了。下面一起来看一下代码,写的不好勿喷。

在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:
以scope为snsapi_userinfo为例 :
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

首先需要定义一些全局变量和加载引用的包,我引用了flask、urllib、json这些基本包。appID和AppSecret应该都看的懂吧,具体一些参数看https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

# encoding=utf-8from flask import Flask,requestimport urllib.requestimport jsonappID="......"AppSecret="......"url_code = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={appsecret}&code={code}&grant_type=authorization_code"url_retoken = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={appid}&grant_type=refresh_token&refresh_token={refresh_token}"url_info = "https://api.weixin.qq.com/sns/userinfo?access_token={access_token}&openid={openid}&lang=zh_CN"

根据flask路由来进行判断

app = Flask(__name__)@app.route('/pywx/getWeiXin')

接下来是我们如何获取基本信息的内容

def getCode():    #用户同意授权,获取code。通过微信服务器返回的code来获取    code = request.args.get('code')    #code不为空进行操作    if code:        #获取accessToken和openID        accessToken = urllib.request.Request(url_code.format(appid=appID, appsecret=AppSecret, code=code))        res_data = urllib.request.urlopen(accessToken)        res = res_data.read().decode('utf-8')        res_json=json.loads(res)#转成json        access_token=res_json["access_token"]        refresh_token=res_json["refresh_token"]        openid = res_json["openid"]        #刷新access_token(可写可不写)       getRefreshToken=     urllib.request.Request(url_retoken.format(appid=appID,refresh_token=refresh_token))        res_data = urllib.request.urlopen(getRefreshToken)        res_reToken = res_data.read().decode('utf-8')        res_json = json.loads(res_reToken)  # 转成json        access_token = res_json["access_token"]        #获取用户基本信息        getUserInfo = urllib.request.Request(url_info.format(access_token=access_token,openid=openid))        res_data = urllib.request.urlopen(getUserInfo)        res = res_data.read().decode('utf-8')        #返回的结果输入到网页        return res

最后我们执行一下语句

if __name__ == '__main__':    #app.run(host="服务器地址",post=端口号,debug模式)    app.run(port=7099,debug=True)

大功告成。但是还是有需要优化的地方,只是讲一个思路哦!
github:https://github.com/DIVIBEAR/pythonDemo/blob/master/demo/pywx/