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 参考。