From 716b8c245029dfdef2c636d05afc7efc09968b6c Mon Sep 17 00:00:00 2001 From: NOctu1412 Date: Fri, 21 Jun 2024 13:57:01 +0200 Subject: [PATCH 1/2] make firebase the default login solution --- client/pages/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/pages/index.tsx b/client/pages/index.tsx index 9312b8e..a463e24 100644 --- a/client/pages/index.tsx +++ b/client/pages/index.tsx @@ -172,7 +172,7 @@ export default function Home() { buttonClass={s.button} containerClass={s.cont} /> - From 0c00fb72356d0c82666d119979cc084a9ace699b Mon Sep 17 00:00:00 2001 From: NOctu1412 Date: Fri, 21 Jun 2024 15:02:20 +0200 Subject: [PATCH 2/2] fixed the refresh issue --- client/pages/api/otp/fire/verify.ts | 7 ++-- client/pages/api/refresh.ts | 61 ++++++++++++++++------------- client/pages/index.tsx | 5 ++- client/utils/check.ts | 21 +++++----- client/utils/logout.ts | 3 +- 5 files changed, 55 insertions(+), 42 deletions(-) diff --git a/client/pages/api/otp/fire/verify.ts b/client/pages/api/otp/fire/verify.ts index c13a8a6..63d30bf 100644 --- a/client/pages/api/otp/fire/verify.ts +++ b/client/pages/api/otp/fire/verify.ts @@ -105,10 +105,11 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) console.log('---------------------') res.status(200).json({ - token: access_token, - refresh_token: access_refresh_token, + bereal_access_token: access_token, + firebase_refresh_token: firebase_refresh_token, + firebase_id_token: firebase_token, token_type: access_token_type, - expiration: access_expiration, + expiration: firebase_expiration, uid: uid, is_new_user: is_new_user }); diff --git a/client/pages/api/refresh.ts b/client/pages/api/refresh.ts index fb3bcee..4e0a122 100644 --- a/client/pages/api/refresh.ts +++ b/client/pages/api/refresh.ts @@ -1,44 +1,51 @@ import type { NextApiRequest, NextApiResponse } from 'next' import axios from 'axios'; -import { PROXY } from '@/utils/constants'; +import { GAPIKEY, PROXY } from '@/utils/constants'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { + let headers_list = {"Accept": "application/json","User-Agent": "BeReal/8586 CFNetwork/1240.0.4 Darwin/20.6.0","x-ios-bundle-identifier": "AlexisBarreyat.BeReal","Content-Type": "application/json"} + let firebase_refresh_token = req.body.refresh; - let headersList = { - "Accept": "*/*", - "User-Agent": "BeReal/8586 CFNetwork/1240.0.4 Darwin/20.6.0", - "x-ios-bundle-identifier": "AlexisBarreyat.BeReal", - "Content-Type": "application/json" + let firebase_refresh_data = JSON.stringify({ + "grantType": "refresh_token", + "refreshToken": firebase_refresh_token + }); + let firebase_refresh_options = { + url: `https://securetoken.googleapis.com/v1/token?key=${GAPIKEY}`, + method: "POST", + headers: headers_list, + data: firebase_refresh_data, } + let firebase_refresh_response = await axios.request(firebase_refresh_options); - let refresh_token = req.body.refresh; + let new_firebase_token = firebase_refresh_response.data.id_token; + let new_firebase_refresh_token = firebase_refresh_response.data.refresh_token; + let firebase_expiration = Date.now() + firebase_refresh_response.data.expires_in * 1000; - console.log("refresh token") - console.log(refresh_token); + // ============================================================================================ - let refresh_body = JSON.stringify({ - "grant_type": "refresh_token", + let access_grant = JSON.stringify({ + "grant_type": "firebase", "client_id": "ios", "client_secret": "962D357B-B134-4AB6-8F53-BEA2B7255420", - "refresh_token": refresh_token + "token": new_firebase_token }); - - let refresh_options = { - url: `${PROXY}https://auth.bereal.team/token?grant_type=refresh_token`, + let access_grant_options = { + url: `${PROXY}https://auth.bereal.team/token?grant_type=firebase`, method: "POST", - headers: headersList, - data: refresh_body, + headers: headers_list, + data: access_grant, } - - return axios.request(refresh_options).then( + return await axios.request(access_grant_options).then( (response) => { - console.log(response.data); - - let token = response.data.access_token; - let refresh = response.data.refresh_token; - let expiration = Date.now() + response.data.expires_in * 1000; - - res.status(200).json({ status: "success", token: token, refresh: refresh, expiration: expiration }); + let bereal_access_token = response.data.access_token; + res.status(200).json({ + status: "success", + token: bereal_access_token, + firebase_id_token: new_firebase_token, + firebase_refresh_token: new_firebase_refresh_token, + expiration: firebase_expiration + }) } ).catch( (error) => { @@ -46,5 +53,5 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) console.log(error); res.status(400).json({ status: "error" }); } - ) + ); } \ No newline at end of file diff --git a/client/pages/index.tsx b/client/pages/index.tsx index a463e24..f2005f7 100644 --- a/client/pages/index.tsx +++ b/client/pages/index.tsx @@ -103,8 +103,9 @@ export default function Home() { let response = axios.request(options).then( async (response) => { console.log(response.data); - localStorage.setItem("token", response.data.token); - localStorage.setItem("refresh_token", response.data.refresh_token); + localStorage.setItem("token", response.data.bereal_access_token); + localStorage.setItem("firebase_refresh_token", response.data.firebase_refresh_token); + localStorage.setItem("firebase_id_token", response.data.firebase_id_token) localStorage.setItem("expiration", response.data.expiration) localStorage.setItem("uid", response.data.uid); localStorage.setItem("is_new_user", response.data.is_new_user); diff --git a/client/utils/check.ts b/client/utils/check.ts index cf509fc..2b4174f 100644 --- a/client/utils/check.ts +++ b/client/utils/check.ts @@ -8,7 +8,8 @@ export default function useCheck() { function removeStorage() { localStorage.removeItem("token"); - localStorage.removeItem("refresh_token"); + localStorage.removeItem("firebase_refresh_token"); + localStorage.removeItem("firebase_id_token"); localStorage.removeItem("expiration"); localStorage.removeItem("uid"); localStorage.removeItem("is_new_user"); @@ -21,15 +22,15 @@ export default function useCheck() { console.log("CHECKING STATE") let token = localStorage.getItem("token"); - let refresh_token = localStorage.getItem("refresh_token"); + let firebase_refresh_token = localStorage.getItem("firebase_refresh_token"); let expiration = localStorage.getItem("expiration"); let now = Date.now(); console.log(token); - console.log(refresh_token); + console.log(firebase_refresh_token); console.log(expiration); console.log(now); - if (token == null || expiration == null || refresh_token == null) { + if (token == null || expiration == null || firebase_refresh_token == null) { console.log("no token or expiration or refresh_token"); removeStorage(); router.push("/"); @@ -42,19 +43,21 @@ export default function useCheck() { { url: "/api/refresh", method: "POST", - data: { refresh: refresh_token } + data: { refresh: firebase_refresh_token } } ).then( (response) => { console.log(response.data); if (response.data.status == "success") { console.log("refresh success"); - let token = response.data.token; - let refresh_token = response.data.refresh; + let new_token = response.data.token; + let new_firebase_id_token = response.data.firebase_id_token; + let new_firebase_refresh_token = response.data.firebase_refresh_token; let expiration = response.data.expiration; - localStorage.setItem("token", token); - localStorage.setItem("refresh_token", refresh_token); + localStorage.setItem("token", new_token); + localStorage.setItem("firebase_refresh_token", new_firebase_refresh_token); + localStorage.setItem("firebase_id_token", new_firebase_id_token); localStorage.setItem("expiration", expiration); console.log("refreshing page"); diff --git a/client/utils/logout.ts b/client/utils/logout.ts index f1eadec..a7b500b 100644 --- a/client/utils/logout.ts +++ b/client/utils/logout.ts @@ -5,7 +5,8 @@ export function logout(router: any, ls: any) { function removeStorage() { ls.removeItem("token"); - ls.removeItem("refresh_token"); + ls.removeItem("firebase_refresh_token"); + ls.removeItem("firebase_id_token"); ls.removeItem("expiration"); ls.removeItem("uid"); ls.removeItem("is_new_user");