- 支持snsapi_base, 以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
- 支持snsapi_userinfo, 以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
微信详细文档请点击
from wechat import WechatAuth
# from wechat.auth import WechatAuth
auth = WechatAuth('app_id', 'app_key')url = auth.authorize("http://code.show/login/wechat/callback", "snsapi_base")data = auth.access_token(code)
print data.access_token
print data.refresh_token
print data.openiddata = auth.jscode2session(code)如果是snsapi_userinfo则需要
auth.user_info(data.access_token)auth.refresh_token(data.refresh_token)# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
from flask import Flask, redirect, request, url_for
from wechat.auth import WechatAuth
app = Flask(__name__)
app_id = ''
app_secret = ''
auth = WechatAuth(app_id, app_secret)
@app.route("/login")
def login():
openid = request.cookies.get("openid")
next = request.args.get("next") or request.referrer or "/",
if openid:
return redirect(next)
callback = url_for("authorized", next=next, _external=True)
url = auth.authorize(callback, "snsapi_base")
return redirect(url)
@app.route("/authorized")
def authorized():
code = request.args.get("code")
if not code:
return "ERR_INVALID_CODE", 400
next = request.args.get("next", "/")
data = auth.access_token(code)
openid = data.openid
resp = redirect(next)
expires = datetime.now() + timedelta(days=1)
resp.set_cookie("openid", openid, expires=expires)
return resp