|
@@ -1,8 +1,42 @@
|
|
import { Request as ExpressRequest, Response as ExpressResponse } from "express";
|
|
import { Request as ExpressRequest, Response as ExpressResponse } from "express";
|
|
-import { rpcClient } from "src/rpc";
|
|
|
|
|
|
+import got from "got";
|
|
|
|
+
|
|
|
|
+const TOKEN_API = "https://discord.com/api/oauth2/token";
|
|
|
|
+
|
|
|
|
+interface CodeResponse {
|
|
|
|
+ code?: string;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+interface AccessTokenResponse {
|
|
|
|
+ // eslint-disable-next-line camelcase
|
|
|
|
+ access_token: string;
|
|
|
|
+ // eslint-disable-next-line camelcase
|
|
|
|
+ token_type: string;
|
|
|
|
+ // eslint-disable-next-line camelcase
|
|
|
|
+ expires_in: number;
|
|
|
|
+ // eslint-disable-next-line camelcase
|
|
|
|
+ refresh_token: string;
|
|
|
|
+ // eslint-disable-next-line camelcase
|
|
|
|
+ scope: string;
|
|
|
|
+}
|
|
|
|
|
|
export const get = async (req: ExpressRequest, res: ExpressResponse): Promise<void> => {
|
|
export const get = async (req: ExpressRequest, res: ExpressResponse): Promise<void> => {
|
|
- const result = await rpcClient.getPing({ ping: "PING" });
|
|
|
|
- console.log(`Res: ${result.text}, url: ${req.url}`);
|
|
|
|
|
|
+ const data = req.query as CodeResponse;
|
|
|
|
+ if (!data.code) {
|
|
|
|
+ res.redirect("/");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ const result = await got<AccessTokenResponse>(TOKEN_API, {
|
|
|
|
+ method: "post",
|
|
|
|
+ form: {
|
|
|
|
+ client_id: process.env.BOT_CLIENT_ID,
|
|
|
|
+ client_secret: process.env.BOT_CLIENT_SECRET,
|
|
|
|
+ grant_type: "authorization_code",
|
|
|
|
+ code: data.code,
|
|
|
|
+ scope: "identify",
|
|
|
|
+ redirect_uri: process.env.WEB_AUTH_URI,
|
|
|
|
+ },
|
|
|
|
+ });
|
|
|
|
+ console.log(result.body);
|
|
res.redirect("/");
|
|
res.redirect("/");
|
|
};
|
|
};
|