用户身份授权¶
通过 OAuth 授权码流程获取用户身份,再用 with_auth 切换到该身份调用接口。
引导用户授权¶
from larkify import AppAuthStrategy, Feishu
auth = AppAuthStrategy("cli_xxx", "app_secret")
feishu = Feishu(auth)
# 把用户引导到授权页
url = auth.get_authorize_url(
feishu, "https://example.com/callback", scope="offline_access"
)
用 code 换 token¶
# 用回调里的 code 换 token
user = auth.as_web_user("code", "https://example.com/callback").exchange_token(feishu)
print(user.token, user.refresh_token)
# 用回调里的 code 换 token
web_user = auth.as_web_user("code", "https://example.com/callback")
user = await web_user.async_exchange_token(feishu)
print(user.token, user.refresh_token)
保存 token 并调用接口¶
Warning
refresh_token 是一次性的,新值只会返回一次,务必通过 on_refresh 保存。
from larkify import OAuthToken
def save(token: OAuthToken) -> None:
"""refresh_token 只能用一次,新值必须持久化。"""
user.on_refresh = save
feishu.with_auth(user).rest.authen.v1.user_info.get()
from larkify import OAuthToken
async def save(token: OAuthToken) -> None:
"""refresh_token 只能用一次,新值必须持久化。"""
user.on_refresh = save
await feishu.with_auth(user).rest.authen.v1.user_info.async_get()
更多认证方式见认证。