98.0k

在 v0 中打开

PreviousNext

将您的注册表与 v0 中的“打开”功能集成。

如果您的注册表托管且可以通过 URL 公开访问,您可以通过使用 https://v0.dev/chat/api/open?url=[URL] 端点,在 v0 中打开注册表项目。

例如:https://v0.dev/chat/api/open?url=https://ui.shadcn.com/r/styles/new-york/login-01.json

按钮

有关如何构建您自己的“在 v0 中打开”按钮的更多信息,请参见 构建您的 v0 打开按钮

下面是一个如何向您网站添加“在 v0 中打开”按钮的简单示例。

import { Button } from "@/components/ui/button"
 
export function OpenInV0Button({ url }: { url: string }) {
  return (
    <Button
      aria-label="Open in v0"
      className="h-8 gap-1 rounded-[6px] bg-black px-3 text-xs text-white hover:bg-black hover:text-white dark:bg-white dark:text-black"
      asChild
    >
      <a
        href={`https://v0.dev/chat/api/open?url=${url}`}
        target="_blank"
        rel="noreferrer"
      >
        Open in{" "}
        <svg
          viewBox="0 0 40 20"
          fill="none"
          xmlns="http://www.w3.org/2000/svg"
          className="h-5 w-5 text-current"
        >
          <path
            d="M23.3919 0H32.9188C36.7819 0 39.9136 3.13165 39.9136 6.99475V16.0805H36.0006V6.99475C36.0006 6.90167 35.9969 6.80925 35.9898 6.71766L26.4628 16.079C26.4949 16.08 26.5272 16.0805 26.5595 16.0805H36.0006V19.7762H26.5595C22.6964 19.7762 19.4788 16.6139 19.4788 12.7508V3.68923H23.3919V12.7508C23.3919 12.9253 23.4054 13.0977 23.4316 13.2668L33.1682 3.6995C33.0861 3.6927 33.003 3.68923 32.9188 3.68923H23.3919V0Z"
            fill="currentColor"
          ></path>
          <path
            d="M13.7688 19.0956L0 3.68759H5.53933L13.6231 12.7337V3.68759H17.7535V17.5746C17.7535 19.6705 15.1654 20.6584 13.7688 19.0956Z"
            fill="currentColor"
          ></path>
        </svg>
      </a>
    </Button>
  )
}
<OpenInV0Button url="https://example.com/r/hello-world.json" />

身份验证

“在 v0 中打开”仅支持通过查询参数进行身份验证。不支持命名空间注册表或诸如 Bearer 令牌或头部 API 密钥等高级身份验证方法。

使用查询参数认证

要为您的注册表添加“在 v0 中打开”的身份验证,请使用 token 查询参数:

https://registry.company.com/r/hello-world.json?token=your_secure_token_here

在注册表服务器上实现时:

  1. 检查 token 查询参数
  2. 根据您的身份验证系统验证该令牌
  3. 如果令牌无效或缺失,返回 401 Unauthorized 响应
  4. shadcn CLI 和“在 v0 中打开”都会处理 401 响应并向用户显示相应消息

示例实现

// Next.js API 路由示例
export async function GET(request: NextRequest) {
  const token = request.nextUrl.searchParams.get("token")
 
  if (!isValidToken(token)) {
    return NextResponse.json(
      {
        error: "Unauthorized",
        message: "Invalid or missing token",
      },
      { status: 401 }
    )
  }
 
  // 返回注册表项目
  return NextResponse.json(registryItem)
}