Python SDK

Python SDK 集成指南,支持 Flask/Django/FastAPI。

安装

pip install yunjii-um-sdk

初始化

from um_sdk import UM

um = UM(
    appid='your_appid',
    appkey='your_appkey',
    callback='https://your-app.com/login/callback',
    api_url='https://um.yunjii.cn/php',
)

Flask 集成示例

from flask import Flask, session, redirect, request, jsonify
import secrets
from um_sdk import UM

app = Flask(__name__)
app.secret_key = 'your-secret-key'

um = UM(
    appid='your_appid',
    appkey='your_appkey',
    callback='http://localhost:5000/callback',
    api_url='https://um.yunjii.cn/php',
)

@app.route('/login')
def login():
    state = secrets.token_hex(16)
    session['oauth_state'] = state
    login_url = um.login('wx', state)
    return redirect(login_url)

@app.route('/callback')
def callback():
    code = request.args.get('code')
    state = request.args.get('state')

    if state != session.get('oauth_state'):
        return 'State mismatch', 400

    user = um.callback(code)
    session['user'] = user
    return redirect('/dashboard')

@app.route('/api/user')
def get_user():
    token = session.get('user', {}).get('token')
    if not token:
        return jsonify({'error': 'Not logged in'}), 401

    result = um.check_token(token)
    if result['code'] != 1:
        return jsonify({'error': 'Invalid token'}), 401

    return jsonify(result['data'])

Django 集成示例

# views.py
from django.shortcuts import redirect
from django.http import JsonResponse
from django.conf import settings
import secrets
from um_sdk import UM

um = UM(
    appid=settings.UM_APPID,
    appkey=settings.UM_APPKEY,
    callback=settings.UM_CALLBACK,
    api_url='https://um.yunjii.cn/php',
)

def login(request):
    state = secrets.token_hex(16)
    request.session['oauth_state'] = state
    return redirect(um.login('wx', state))

def callback(request):
    code = request.GET.get('code')
    state = request.GET.get('state')

    if state != request.session.get('oauth_state'):
        return JsonResponse({'error': 'State mismatch'}, status=400)

    user = um.callback(code)
    request.session['user'] = user
    return redirect('/dashboard')

FastAPI 集成示例

from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import RedirectResponse
import secrets
from um_sdk import UM

app = FastAPI()
um = UM(
    appid='your_appid',
    appkey='your_appkey',
    callback='http://localhost:8000/callback',
    api_url='https://um.yunjii.cn/php',
)

@app.get('/login')
async def login(request: Request):
    state = secrets.token_hex(16)
    request.session['oauth_state'] = state
    return RedirectResponse(um.login('wx', state))

@app.get('/callback')
async def callback(request: Request, code: str, state: str):
    if state != request.session.get('oauth_state'):
        raise HTTPException(400, 'State mismatch')
    user = um.callback(code)
    request.session['user'] = user
    return RedirectResponse(url='/dashboard')

Python SDK 所有方法都返回字典(dict),字段与 PHP SDK 一致。详见 API 参考