参考

Embassy User

用户账户、AI、Payment、Service 和当前身份 API。

只用 Federation URL 创建 Embassy,再使用它的 user 身份子域。

import { Embassy } from "@downcity/federation";

const embassy = new Embassy({ federation_url: "https://fed.example.com" });
const providers = await embassy.user.account.providers();

Account

await embassy.user.account.login({
  provider: "email",
  bureau_id: "product-web",
  input: { email: "[email protected]", password: "password" },
});

const current_user = await embassy.user.current();
const user_token = embassy.user.account.token();
await embassy.user.account.logout();

bureau_id 属于登录请求,不属于 Embassy 构造参数。登录成功会更新当前实例持有的 User Token。创建 Embassy 时也可以直接传入已有 user_token

Service

const models = await embassy.user.ai.catalog();
const methods = await embassy.user.payment.methods();
const services = await embassy.user.list_services();
const result = await embassy.user.service("rewrite")
  .action("formal")
  .invoke({ text: "hello" });

embassy.user.get()post() 只请求 Federation 根据当前 User Token 解析出的可信 Bureau server。Embassy 会拒绝把 Token 转发到其他 origin。