微信 OAuth 网页授权接入

公众号 OAuth 网页授权接入

class wechatpy.oauth.WeChatOAuth(app_id, secret, redirect_uri, scope='snsapi_base', state='')[源代码]

微信公众平台 OAuth 网页授权

详情请参考 https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505

authorize_url

获取授权跳转地址

返回:URL 地址
check_access_token(openid=None, access_token=None)[源代码]

检查 access_token 有效性

参数:
  • openid – 可选,微信 openid,默认获取当前授权用户信息
  • access_token – 可选,access_token,默认使用当前授权用户的 access_token
返回:

有效返回 True,否则 False

fetch_access_token(code)[源代码]

获取 access_token

参数:code – 授权完成跳转回来后 URL 中的 code 参数
返回:JSON 数据包
get_user_info(openid=None, access_token=None, lang='zh_CN')[源代码]

获取用户信息

参数:
  • openid – 可选,微信 openid,默认获取当前授权用户信息
  • access_token – 可选,access_token,默认使用当前授权用户的 access_token
  • lang – 可选,语言偏好, 默认为 zh_CN
返回:

JSON 数据包

qrconnect_url

生成扫码登录地址

返回:URL 地址
refresh_access_token(refresh_token)[源代码]

刷新 access token

参数:refresh_token – OAuth2 refresh token
返回:JSON 数据包

微信开放平台 代公众号 OAuth 网页授权接入

class wechatpy.component.ComponentOAuth(app_id, component_appid=None, component_access_token=None, redirect_uri=None, scope='snsapi_base', state='', component=None)[源代码]

微信开放平台 代公众号 OAuth 网页授权

详情请参考 https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318590

fetch_access_token(code)[源代码]

获取 access_token

参数:code – 授权完成跳转回来后 URL 中的 code 参数
返回:JSON 数据包
get_authorize_url(redirect_uri, scope='snsapi_base', state='')[源代码]
参数:
  • redirect_uri – 重定向地址,需要urlencode,这里填写的应是服务开发方的回调地址
  • scope – 可选,微信公众号 OAuth2 scope,默认为 snsapi_base
  • state – 可选,重定向后会带上state参数,开发者可以填写任意参数值,最多128字节
get_user_info(openid=None, access_token=None, lang='zh_CN')[源代码]

获取用户基本信息(需授权作用域为snsapi_userinfo)

如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。

参数:
  • openid – 可选,微信 openid,默认获取当前授权用户信息
  • access_token – 可选,access_token,默认使用当前授权用户的 access_token
  • lang – 可选,语言偏好, 默认为 zh_CN
返回:

JSON 数据包

refresh_access_token(refresh_token)[源代码]

刷新 access token

参数:refresh_token – OAuth2 refresh token
返回:JSON 数据包

企业号 OAuth 网页授权接入

下述代码使用 Flask. 框架作为示例

from flask import Flask, request, redirect, jsonify, session, abort
from wechatpy.enterprise import WeChatClient
import functools


app = Flask(__name__)

CORP_ID = 'wxc480d56d906bc121'
SECRET = '79BAUPuQ0zcytpz7f5vouAFPwnWDK0XePjKeWsY7Wo-cpAZvYYAy0OH-PH0-6OUN'

app.secret_key = 'key'

client = WeChatClient(
    CORP_ID,
    SECRET
)


def oauth(method):
    @functools.wraps(method)
    def warpper(*args, **kwargs):
        code = request.args.get('code', None)
        url = client.oauth.authorize_url(request.url)

        if code:
            try:
                user_info = client.oauth.get_user_info(code)
            except Exception as e:
                print e.errmsg, e.errcode
                # 这里需要处理请求里包含的 code 无效的情况
                abort(403)
            else:
                session['user_info'] = user_info
        else:
            return redirect(url)

        return method(*args, **kwargs)
    return warpper


@app.route('/')
@oauth
def index():
    user_info = session.get('user_info')
    return jsonify(data=user_info)


if __name__ == '__main__':
    app.run(
        debug=True,
        port=9000,
    )
class wechatpy.enterprise.client.api.oauth.WeChatOAuth(client=None)[源代码]
authorize_url(redirect_uri, state=None)[源代码]

获取授权地址 详情请参考 http://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3

参数:
  • redirect_uri – 授权后重定向的回调链接地址
  • state – 重定向后会带上 state 参数
返回:

返回的 JSON 数据包

get_user_info(code)[源代码]

根据 code 获取用户信息 详情请参考 http://qydev.weixin.qq.com/wiki/index.php?title=OAuth%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3

参数:code – 通过成员授权获取到的code
返回:返回的 JSON 数据包