微信 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

property 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 数据包

property qrconnect_url#

生成扫码登录地址

返回

URL 地址

refresh_access_token(refresh_token)[源代码]#

刷新 access token

参数

refresh_token – OAuth2 refresh token

返回

JSON 数据包

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

class wechatpy.component.ComponentOAuth(component, app_id)[源代码]#

微信开放平台 代公众号 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.work 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 wrapper(*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 wrapper


@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.work.client.api.oauth.WeChatOAuth(client=None)[源代码]#
authorize_url(redirect_uri, state=None)[源代码]#

构造网页授权链接 详情请参考 https://work.weixin.qq.com/api/doc#90000/90135/91022

参数
  • redirect_uri – 授权后重定向的回调链接地址

  • state – 重定向后会带上 state 参数

返回

返回的 JSON 数据包

get_user_info(code)[源代码]#

获取访问用户身份 详情请参考 https://work.weixin.qq.com/api/doc#90000/90135/91023

参数

code – 通过成员授权获取到的code

返回

返回的 JSON 数据包