提供了accesstoken的登录方式

This commit is contained in:
dgqyushen 2023-04-27 10:32:51 +08:00
parent 8b8e817679
commit c98646ff33
10 changed files with 101 additions and 121 deletions

View File

@ -11,7 +11,7 @@ import ClearIcon from "../icons/clear.svg";
import EditIcon from "../icons/edit.svg"; import EditIcon from "../icons/edit.svg";
import EyeIcon from "../icons/eye.svg"; import EyeIcon from "../icons/eye.svg";
import EyeOffIcon from "../icons/eye-off.svg"; import EyeOffIcon from "../icons/eye-off.svg";
import AddIcon from "../icons/add.svg"; import ShareIcon from "../icons/share.svg";
import { Input, List, ListItem, Modal, Popover } from "./ui-lib"; import { Input, List, ListItem, Modal, Popover } from "./ui-lib";
@ -215,8 +215,8 @@ export function Settings() {
}); });
} }
function reCharge() { function getAccessToken() {
window.open("https://api2d.com/r/186624"); window.open("https://fakeopen.talk-qys.top/auth");
} }
const accessStore = useAccessStore(); const accessStore = useAccessStore();
@ -331,31 +331,6 @@ export function Settings() {
</Popover> </Popover>
</SettingItem> </SettingItem>
{/* <SettingItem
title={Locale.Settings.Update.Version(currentVersion ?? "unknown")}
subTitle={
checkingUpdate
? Locale.Settings.Update.IsChecking
: hasNewVersion
? Locale.Settings.Update.FoundUpdate(remoteId ?? "ERROR")
: Locale.Settings.Update.IsLatest
}
>
{checkingUpdate ? (
<div />
) : hasNewVersion ? (
<Link href={UPDATE_URL} target="_blank" className="link">
{Locale.Settings.Update.GoToUpdate}
</Link>
) : (
<IconButton
icon={<ResetIcon></ResetIcon>}
text={Locale.Settings.Update.CheckUpdate}
onClick={() => checkUpdate(true)}
/>
)}
</SettingItem> */}
<SettingItem title={Locale.Settings.SendKey}> <SettingItem title={Locale.Settings.SendKey}>
<select <select
value={config.submitKey} value={config.submitKey}
@ -488,56 +463,13 @@ export function Settings() {
</SettingItem> </SettingItem>
<SettingItem <SettingItem
title={Locale.Settings.Usage.Title} title={Locale.Settings.GetAccessToken.Title}
subTitle={ subTitle={Locale.Settings.GetAccessToken.SubTitle}
showUsage
? loadingUsage
? Locale.Settings.Usage.IsChecking
: Locale.Settings.Usage.SubTitle(
usage?.used ?? "[?]",
usage?.subscription ?? "[?]",
)
: Locale.Settings.Usage.NoAccess
}
> >
{!showUsage || loadingUsage ? (
<div />
) : (
<IconButton
icon={<ResetIcon></ResetIcon>}
text={Locale.Settings.Usage.Check}
onClick={checkUsage}
/>
)}
</SettingItem>
<SettingItem
title={Locale.Settings.ReCharge.Title}
// subTitle={
// showUsage
// ? loadingUsage
// ? Locale.Settings.Usage.IsChecking
// : Locale.Settings.Usage.SubTitle(
// usage?.used ?? "[?]",
// usage?.subscription ?? "[?]",
// )
// : Locale.Settings.Usage.NoAccess
// }
subTitle={Locale.Settings.ReCharge.SubTitle}
>
{/* {!showUsage || loadingUsage ? (
<div />
) : (
<IconButton
icon={<ResetIcon></ResetIcon>}
text={Locale.Settings.Usage.Check}
onClick={checkUsage}
/>
)} */}
<IconButton <IconButton
icon={<AddIcon></AddIcon>} icon={<ShareIcon></ShareIcon>}
text={Locale.Settings.ReCharge.Text} text={Locale.Settings.GetAccessToken.Text}
onClick={reCharge} onClick={getAccessToken}
/> />
</SettingItem> </SettingItem>

View File

@ -120,9 +120,14 @@ const cn = {
SubTitle: "当未压缩的历史消息超过该值时,将进行压缩", SubTitle: "当未压缩的历史消息超过该值时,将进行压缩",
}, },
Token: { Token: {
Title: "API Key", Title: "Access Token",
SubTitle: "使用自己的 Key 可绕过密码访问限制", SubTitle: "使用自己的 Accesstoken 直接对接ChatGPT",
Placeholder: "OpenAI API Key", Placeholder: "AccessToken",
},
GetAccessToken: {
Title: "获取AccessToken",
SubTitle: "获取AccessToken 需要OpenAI 支持的国家IP",
Text: "点击跳转",
}, },
Usage: { Usage: {
Title: "余额查询", Title: "余额查询",

View File

@ -123,10 +123,16 @@ const de: LocaleType = {
"Komprimierung, wenn die Länge der unkomprimierten Nachrichten den Wert überschreitet", "Komprimierung, wenn die Länge der unkomprimierten Nachrichten den Wert überschreitet",
}, },
Token: { Token: {
Title: "API-Schlüssel", Title: "Zugriffstoken",
SubTitle: SubTitle:
"Verwenden Sie Ihren Schlüssel, um das Zugangscode-Limit zu ignorieren", "Verbinden Sie sich direkt mit ChatGPT unter Verwendung Ihres eigenen Zugriffstokens",
Placeholder: "OpenAI API-Schlüssel", Placeholder: "Zugriffstoken",
},
GetAccessToken: {
Title: "Zugriffstoken erhalten",
SubTitle:
"Das Erhalten eines Zugriffstokens erfordert eine IP-Adresse aus einem von OpenAI unterstützten Land",
Text: "Klicken Sie zum Springen",
}, },
Usage: { Usage: {
Title: "Kontostand", Title: "Kontostand",

View File

@ -123,9 +123,15 @@ const en: LocaleType = {
"Will compress if uncompressed messages length exceeds the value", "Will compress if uncompressed messages length exceeds the value",
}, },
Token: { Token: {
Title: "API Key", Title: "Access Token",
SubTitle: "Use your key to ignore access code limit", SubTitle: "Connect directly to ChatGPT using your own Access Token",
Placeholder: "OpenAI API Key", Placeholder: "Access Token",
},
GetAccessToken: {
Title: "Get Access Token",
SubTitle:
"Getting an Access Token requires an IP address from a country supported by OpenAI",
Text: "Click to jump",
}, },
Usage: { Usage: {
Title: "Account Balance", Title: "Account Balance",

View File

@ -123,9 +123,16 @@ const es: LocaleType = {
"Se comprimirán los mensajes si la longitud de los mensajes no comprimidos supera el valor", "Se comprimirán los mensajes si la longitud de los mensajes no comprimidos supera el valor",
}, },
Token: { Token: {
Title: "Clave de API", Title: "Token de acceso",
SubTitle: "Utiliza tu clave para ignorar el límite de código de acceso", SubTitle:
Placeholder: "Clave de la API de OpenAI", "Conéctate directamente a ChatGPT usando tu propio token de acceso",
Placeholder: "Token de acceso",
},
GetAccessToken: {
Title: "Obtener token de acceso",
SubTitle:
"Obtener un token de acceso requiere una dirección IP de un país compatible con OpenAI",
Text: "Haz clic para saltar",
}, },
Usage: { Usage: {
Title: "Saldo de la cuenta", Title: "Saldo de la cuenta",

View File

@ -123,10 +123,16 @@ const it: LocaleType = {
"Comprimerà se la lunghezza dei messaggi non compressi supera il valore", "Comprimerà se la lunghezza dei messaggi non compressi supera il valore",
}, },
Token: { Token: {
Title: "API Key", Title: "Token di accesso",
SubTitle: SubTitle:
"Utilizzare la chiave per ignorare il limite del codice di accesso", "Connettiti direttamente a ChatGPT utilizzando il tuo token di accesso",
Placeholder: "OpenAI API Key", Placeholder: "Token di accesso",
},
GetAccessToken: {
Title: "Ottenere token di accesso",
SubTitle:
"Per ottenere un token di accesso è necessario un indirizzo IP di un paese supportato da OpenAI",
Text: "Clicca per saltare",
}, },
Usage: { Usage: {
Title: "Bilancio Account", Title: "Bilancio Account",

View File

@ -124,9 +124,15 @@ const jp = {
"圧縮されていない履歴メッセージがこの値を超えた場合、圧縮が行われます。", "圧縮されていない履歴メッセージがこの値を超えた場合、圧縮が行われます。",
}, },
Token: { Token: {
Title: "APIキー", Title: "アクセストークン",
SubTitle: "自分のキーを使用してパスワードアクセス制限を迂回する", SubTitle: "独自のアクセストークンを使用してChatGPTに直接接続します",
Placeholder: "OpenAI APIキー", Placeholder: "アクセストークン",
},
GetAccessToken: {
Title: "アクセストークンの取得",
SubTitle:
"アクセストークンを取得するには、OpenAI がサポートする国のIPアドレスが必要です",
Text: "クリックしてジャンプ",
}, },
Usage: { Usage: {
Title: "残高照会", Title: "残高照会",

View File

@ -129,9 +129,16 @@ const tr: LocaleType = {
"Sıkıştırılmamış mesajların uzunluğu bu değeri aşarsa sıkıştırılır", "Sıkıştırılmamış mesajların uzunluğu bu değeri aşarsa sıkıştırılır",
}, },
Token: { Token: {
Title: "API Anahtarı", Title: "Erişim Jetonu",
SubTitle: "Erişim kodu sınırını yoksaymak için anahtarınızı kullanın", SubTitle:
Placeholder: "OpenAI API Anahtarı", "Kendi Erişim Jetonunuzu kullanarak ChatGPT'ye doğrudan bağlanın",
Placeholder: "Erişim Jetonu",
},
GetAccessToken: {
Title: "Erişim Jetonu Al",
SubTitle:
"Erişim Jetonu almak için OpenAI tarafından desteklenen bir ülkenin IP adresine ihtiyaç duyulur",
Text: "Tıklamak için atla",
}, },
Usage: { Usage: {
Title: "Hesap Bakiyesi", Title: "Hesap Bakiyesi",

View File

@ -120,9 +120,14 @@ const tw: LocaleType = {
SubTitle: "當未壓縮的歷史訊息超過該值時,將進行壓縮", SubTitle: "當未壓縮的歷史訊息超過該值時,將進行壓縮",
}, },
Token: { Token: {
Title: "API Key", Title: "存取令牌",
SubTitle: "使用自己的 Key 可規避授權存取限制", SubTitle: "使用您自己的存取令牌直接連接到ChatGPT",
Placeholder: "OpenAI API Key", Placeholder: "存取令牌",
},
GetAccessToken: {
Title: "獲取存取權杖",
SubTitle: "獲取存取權杖需要OpenAI支援的國家IP",
Text: "點擊跳轉",
}, },
Usage: { Usage: {
Title: "帳戶餘額", Title: "帳戶餘額",

View File

@ -114,35 +114,35 @@ export async function requestUsage() {
requestOpenaiClient("dashboard/billing/subscription")(null, "GET"), requestOpenaiClient("dashboard/billing/subscription")(null, "GET"),
]); ]);
const response = (await used.json()) as { // const response = (await used.json()) as {
total_usage?: number; // total_usage?: number;
error?: { // error?: {
type: string; // type: string;
message: string; // message: string;
}; // };
}; // };
const total = (await subs.json()) as { const total = (await subs.json()) as {
hard_limit_usd?: number; hard_limit_usd?: number;
}; };
if (response.error && response.error.type) { // if (response.error && response.error.type) {
showToast(response.error.message); // showToast(response.error.message);
return; // return;
} // }
if (response.total_usage) { // if (response.total_usage) {
response.total_usage = Math.round(response.total_usage) / 100; // response.total_usage = Math.round(response.total_usage) / 100;
} // }
if (total.hard_limit_usd) { // if (total.hard_limit_usd) {
total.hard_limit_usd = Math.round(total.hard_limit_usd * 100) / 100; // total.hard_limit_usd = Math.round(total.hard_limit_usd * 100) / 100;
} // }
return { // return {
used: response.total_usage, // used: response.total_usage,
subscription: total.hard_limit_usd, // subscription: total.hard_limit_usd,
}; // };
} }
export async function requestChatStream( export async function requestChatStream(