https://firebase.google.com/docs/reference/rest/auth#section-refresh-token
Firebase ์ธ์ฆ REST API
FirebaseVisionOnDeviceAutoMLImageLabelerOptions
firebase.google.com
์ด๋ฐ ์ง์ ํ๊ฒ ๋ ๋ฐฐ๊ฒฝ
- ์ต๋ช
์ ์ ๋ก ์๋น์ค๋ฅผ ์ฆ๊ธด๋ค.(์๋ฅผ ๋ค์ด, ํด์ฆ ์ฌ์ดํธ์ธ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ฅผ 100๊ฐ ํผ ๊ฒฝ์ฐ)
- ํ์ฌ Auth: ์ต๋ช ์ ์
-> ์ต๋ช ํ ํฐ refresh ๊ฐ๋ฅ - ๋ก๊ทธ์ธ์ ํ๋ค.
- ํ์ฌ Auth: ๋ก๊ทธ์ธ ์ ์
-> ์ต๋ช ํ ํฐ refresh ๋ถ๊ฐ๋ฅ(ํ์ฌ Auth๋ ๋ก๊ทธ์ธ ์ ์ ํํ ์์ผ๋๊น)
-> ๊ทธ๋ผ ์ต๋ช ํ ํฐ refresh๋ ์ด๋ป๊ฒ ํด์ฃผ์ง?!?!? - ๋ก๊ทธ์์์ ํ๋ค.
- ๋ค์ ์ต๋ช
์ ์ ๋ก ๋์์จ๋ค.
-> ์ด๋, ์ต๋ช ์ ์ ๋ก ํ๋ ๋ฌธ์ 100๊ฐ๋ฅผ ์ต์ธํ๊ฒ ๋ ๋ฆด ์ ์๋ค! ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ฃผ์!
p.s. ๊ธฐ๋ก๋ค์ ์ฐ๋ํด์ฃผ๋ฉด ์๋๋? ์ด๋ฏธ ๋ก๊ทธ์ธ์ ํ ์ ์ ๋ ํ์๊ฐ์ ์์ ์ต๋ช ์ ์ ์ผ ๋์ ๊ธฐ๋ก์ ์ด๋ฏธ ์ฐ๋ํด๋ฒ๋ ธ๊ธฐ ๋๋ฌธ์ ์ ๋๋๋ก ์ ํ์ต๋๋ค.
์ฃผ์ ์ฃผ์ ...
โจ โจ
๊ทธ๋์ ์ ๋ Exchange renewal tokens for ID tokens ์ ์ฌ์ฉํ ๊ฒ์
๋๋ค.
โจ
00. ๊ท์น
fetch(
"https://securetoken.googleapis.com/v1/token?key=" +
process.env.REACT_APP_FIREBASE_API_KEY,
{
crossDomain: true,
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: "grant_type=refresh_token&refresh_token=" + refresh_token,
}
)
.then((response) => console.log("๋ฆฌํ๋ ์ ๋ฐ์๋ค!", response.json()))
.catch((error) => console.error(error));
์๋ฒ์ ์์ฒญํ๊ธฐ ์ํด, ์์ ๊ฐ์ ์ฝ๋๊ฐ ํ์ํ ๊ฒ์ ์ ์ ์๊ฒ ๋ค์.
process.env.REACT_APP_FIREBASE_API_KEY ์ ๋ณธ์ธ์ firebase ํ๋ก์ ํธ์์ ๋ฐ๋ก ์ค์ ํ์ฌ ๊ฐ์ ธ์ต๋๋ค.
๐ ์ฐธ๊ณ : https://avoc-o-d.tistory.com/50?category=1069902
refresh_token ์ ๋ก๊ทธ์ธํ ๋ ํน์ ํ์๊ฐ์ ํ ๋ ๋ณธ์ธ์ด ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํด๋์ ๋ฆฌํ๋ ์ ํ ํฐ์ ๊ฐ์ ธ์ต๋๋ค.
๐ ์ฐธ๊ณ (๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ) : https://avoc-o-d.tistory.com/53?category=1069902
01. fetch๋ก API ์์ฒญํ๊ธฐ
์ ๋ ๋ฆฌ๋์ค๋ฅผ ํตํด state๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ํด๋๋ ์๋์ ๊ฐ์ด ์ ์ฅํ์ต๋๋ค.
src/modules/_actions/getSecureToken.js
async function getSecureToken(params = {}) {
fetch(
"https://securetoken.googleapis.com/v1/token?key=" +
process.env.REACT_APP_FIREBASE_API_KEY,
{
crossDomain: true,
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: "grant_type=refresh_token&refresh_token=" + params.refresh_token,
}
)
.then((response) => console.log("๋ฆฌํ๋ ์ ๋ฐ์๋ค!", response.json()))
.catch((error) => console.error(error));
}
export default getSecureToken;
ํ ํฐ์ ์ฌ๋ฐ๊ธ ๋ฐ์ผ๋ ค๋ ๊ณณ์ ์ฝ๋๋ฅผ ๋ด๋ณด๊ฒ ์ต๋๋ค.
/**
* ์ต๋ช
์ refresh-token์ ์ธ์๋ก postํ์ฌ
* ํ ํฐ์ ์ฌ๋ฐ๊ธ ๋ฐ์.
*/
async function refreshToken() {
....
const guestRefreshToken = await localStorage.getItem("guest-refresh-token");
....
let body = {
refresh_token: guestRefreshToken,
};
...
await getSecureToken(body)
.then((res) => {
console.log("์ต๋ช
ํ ํฐ ๋ฆฌํ๋ ์ ์ฑ๊ณต!!!", res);
// ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ฌ๋ฐ๊ธํ ํ ํฐ๊ณผ refresh ํ ํฐ ์ ์ฅํ๊ธฐ
})
.catch((err) => {
console.log("์ต๋ช
ํ ํฐ ๋ฆฌํ๋ ์ ์๋ฌ", err);
});
...
}
ํํซ..โจโจ