上代码
后端Python程序
# coding:utf-8
from flask import Flask, request, abort, render_template
import urllib2
import json
app = Flask(__name__)
WECHAT_APPID = "自己的appid"
WECHAT_APPSECRET = "自己的appsecret"
@app.route("/wechat8000/index")
def index():
"""主页"""
code = request.args.get("code")
if code is None:
abort(400)
# 向微信获取access_token
url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code" \
% (WECHAT_APPID, WECHAT_APPSECRET, code)
resp = urllib2.urlopen(url)
# 微信返回的数据是json格式的
resp_json_data = resp.read()
resp_dict_data = json.loads(resp_json_data)
# 提取access_token
access_token = resp_dict_data.get("access_token")
if not access_token:
return resp_dict_data.get("errmsg")
else:
open_id = resp_dict_data.get("openid")
# 向微信获取用户资料
url = "https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN" % (access_token, open_id)
resp = urllib2.urlopen(url)
user_json_data = resp.read()
user_dict_data = json.loads(user_json_data)
if "errcode" in user_dict_data:
return resp_dict_data.get("errmsg")
else:
return render_template("index.html", user=user_dict_data)
if __name__ == '__main__':
app.run(port=8000, debug=True)
前端index.html文件代码
<html>
<head>
<meta charset="utf-8">
<title>{{user["nickname"]}}的个人主页title>
head>
<body>
<img alt="头像" src="{{user['headimgurl']}}" width="60">
<table>
<tr>
<th>openidth>
<td>{{user["openid"]}}td>
tr>
<tr>
<th>昵称th>
<td>{{user["nickname"]}}td>
tr>
<tr>
<th>性别th>
<td>
{% if 1 == user["sex"] %}
男
{% elif 2 == user["sex"] %}
女
{% else %}
未知
{% endif %}
td>
tr>
<tr>
<th>省份th>
<td>{{user["province"]}}td>
tr>
<tr>
<th>城市th>
<td>{{user["city"]}}td>
tr>
<tr>
<th>国家th>
<td>{{user["country"]}}td>
tr>
table>
body>
html>