UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

84 lines (75 loc) 2.14 kB
import { customFetch } from 'next-auth'; import type { OAuthConfig } from 'next-auth/providers'; interface FeishuProfile { avatar_big: string; avatar_middle: string; avatar_thumb: string; avatar_url: string; en_name: string; name: string; open_id: string; tenant_key: string; union_id: string; } interface FeishuProfileResponse { data: FeishuProfile; } function Feishu(): OAuthConfig<FeishuProfileResponse> { return { authorization: { params: { scope: '', }, url: 'https://accounts.feishu.cn/open-apis/authen/v1/authorize', }, checks: ['state'], client: { token_endpoint_auth_method: 'client_secret_post', }, clientId: process.env.AUTH_FEISHU_APP_ID, clientSecret: process.env.AUTH_FEISHU_APP_SECRET, [customFetch]: (url, options = {}) => { if ( url === 'https://open.feishu.cn/open-apis/authen/v2/oauth/token' && options.method === 'POST' ) { if (options?.headers) { options.headers = { ...options.headers, 'content-type': 'application/json; charset=utf-8', }; } else { options.headers = { 'content-type': 'application/json; charset=utf-8', }; } if (options.body instanceof URLSearchParams) { options.body = JSON.stringify(Object.fromEntries(options.body)); } } return fetch(url, options); }, id: 'feishu', name: 'Feishu', profile(profileResponse) { const profile = profileResponse.data; return { id: profile.union_id, image: profile.avatar_url, name: profile.name, providerAccountId: profile.union_id, }; }, style: { logo: 'https://p1-hera.feishucdn.com/tos-cn-i-jbbdkfciu3/268ec674a56a4510889f7f5ca14f1ba1~tplv-jbbdkfciu3-image:0:0.image', }, token: 'https://open.feishu.cn/open-apis/authen/v2/oauth/token', type: 'oauth', userinfo: 'https://open.feishu.cn/open-apis/authen/v1/user_info', }; } const provider = { id: 'feishu', provider: Feishu(), }; export default provider;