์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์ฝ๋๋ธ๋ก
- ์ฝ๋๋ธ๋ญ
- ๋ธ๋์น ํ์ธ
- Git๋ช ๋ น์ด
- ๋ธ๋์น ์ญ์
- ![rejected]
- branch ์ญ์
- ๋ธ๋์น ์์ฑ
- markdown
- branch ํ์ธ
- ๋งํฌ๋ค์ด
- branch ์์ฑ
- Today
- Total
DevLog
[โ๏ธ Project Dev Log] 2022-01-06 ๋ณธ๋ฌธ
์ค๋์ ์ด๋ป๊ฒ ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๋์?
- ์ด์ ์์ ํ oauthํ ์คํธ ์ฝ๋๋ฅผ ํ์ฌ ์งํ ์ค์ธ finalproject์ ์ ์ฉ
์ค๋์ ํ๋ก์ ํธ์์ ํ๋ ์ ์ ๋ฌด์์ธ๊ฐ์?
- promise์ ๋จ์ฉ
// ! naver
const naverUrl = `https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id=${naverClientID}&client_secret=${naverClientSecret}&code=${req.body.authorizationCode}&state=${req.body.authorizationState}`;
console.log("naverUrl:", naverUrl);
axios
.get(naverUrl)
.then((res) => {
console.log(res.data);
if (!res.data.access_token) {
console.log("@@@ social login fail");
} else {
console.log("@@@ token exists");
axios({
method: "get",
url: "https://openapi.naver.com/v1/nid/me",
headers: {
Authorization: `Bearer ${res.data.access_token}`,
},
}).then((res) => {
console.log(res.data);
});
}
})
.catch((err) => {
console.log(err);
});
์ด์ oauth๋ฅผ ์ํด ํ ์คํ ํ ์ฝ๋๋ axios์์ฒญ์ ๋ ๋ฒ ์ฐ์ํด์ ๋ณด๋ด๊ณ ์์ง ์์ฑํ์ง๋ ์์์ง๋ง ๋ฐ์์จ ์๋ต์ ๊ฐ๊ณตํด์ ํ์๊ฐ์ ์ ์ํด sequelize.findOrCreate์ ์ฌ์ฉํ๊ณ ์ด์ด์ ํ ํฐ์ ๋ง๋๋ ๊ณผ์ ์ ์งํํ๊ฒ ๋ ํ ๋ฐ ์ด ๊ณผ์ ์์ axios์์ ์ฌ์ฉํ๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฐฉ์์ธ promise๋ฅผ ๊ณ์ํด์ ์ฌ์ฉํด์ผ ํ ๊ฒ ๊ฐ์๋ค.
promise๋ฅผ ๋จ์ฉํ๊ฒ๋๋ฉด promise hell์ด ๋ผ์ ์ฌ์ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๊ฐ ๊ณ์ํด์ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ ์ด์ด์ง๊ฒ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ด ๋๋น ์ง๊ณ ๊ฐ๋ ์ฑ์ด ๋๋น ์ง๋ฉด ์ฝ๋์์ ์๋ฌ ํธ๋ค๋ง์ ํ๊ธฐ๋ ํ๋ค์ด์ง๊ณ ์ด๋ก ์ธํด ์ ์ํ์ด ๊ณ์๋๊ธฐ ๋๋ฌธ์ ์ด์ฐจํผ ํ ์คํธ ์ฝ๋๋ฅผ project๋ก ์ฎ๊ธฐ๋ ๊น์ async await ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ด์ฉํ ์ฝ๋๋ฅผ ์๋ก ์์ฑํด์ ๊ฐ๋ ์ฑ์ ๋์ฌ๋ณด์๋ ํ๋จ์ ํ๋ค.
module.exports = async (req, res) => {
if (!req.body) {
console.log("no code and state in request body");
return res.status(401).send({ message: "no code and state" });
}
const naverUrl = `https://nid.naver.com/oauth2.0/token?grant_type=authorization_code&client_id=${naverClientID}&client_secret=${naverClientSecret}&code=${req.body.authorizationCode}&state=${req.body.authorizationState}`;
//? ํ ํฐ๋ฐ๊ธ => ํด๋ผ์ด์ธํธ์์ ๋ฐ์ code์ state๋ฅผ ์ด์ฉํด์ ๋ค์ด๋ฒ oauth ์๋ฒ์์ token ๋ฐ์์ค๋ ์์ฒญ
const tokenIssuance = await axios //
.get(naverUrl)
.catch((err) => console.log(err));
if (!tokenIssuance.data) {
console.log("no token issuance data");
return res.status(401).send({ message: "no code and state" });
}
const { access_token } = tokenIssuance.data;
//? ๋ค์ด๋ฒ oauth ์๋ฒ์์ ๋ฐ์์จ token์ ์ด์ฉํด ๋ค์ด๋ฒ openapi ์๋ฒ์ ์ ์ ์ ๋ณด๋ฅผ ์์ฒญ
const getData = await axios({
method: "get",
url: "https://openapi.naver.com/v1/nid/me",
headers: {
Authorization: `Bearer ${tokenIssuance.data.access_token}`,
},
}).catch((err) => console.log(err));
};
๊ทธ๋์ ์์ฒ๋ผ async await์ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ ์ฑ์ด ๋๋ฌด ์ข๊ณ ์ด๋ก ์ธํด์ ๋ด๊ฐ ํ์ํ data๋ค์ ๋ณ์์ ๋ด์ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ณ์๋ฅผ ๋นผ์ ํ์ฒ๋ฆฌ ํ๊ธฐ๋ ํธํ๋ค
์ฌ๋ฌ ๋ฐฉ์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์์๋์๊ธฐ์ ์ ์ฌ์ ์์ ์ฌ์ฉํ ์ ์์๋ค
์์ผ๋ก๋ ์ด๋ค ๋ฌธ์ ์ ๋ํ ์ฒ๋ฆฌ๋ฒ์ด ๋ค์ํ ๋ ํ ๊ฐ์ง ๋ฐฉ์๋ง ๊ณ ์งํ๋ ๊ฒ์ด ์๋๊ณ ,
๋ค์ํ ๋ฐฉ์์ ์ดํดํ๊ณ ๊ธฐ๋กํด๋์๋ค๊ฐ ์ฝ๋์ ์ ํฉํ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ๊ฒ ๋ค.
๋ด์ผ์ ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๊ธฐ ์ํด ๋ฌด์์ ํด์ผ ํ๋์?
- oauth naver ์ฝ๋ api ๋ง๋ฌด๋ฆฌ
- oauth kakao ์ฝ๋ ์์ ~ ๋ง๋ฌด๋ฆฌ
- ๋ฐฐํฌํํธ ๊ณต๋ถํ๊ธฐ
'๐ Project - Dev Log' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[โ๏ธ Project Dev Log] 2022-01-08 (0) | 2022.01.08 |
---|---|
[โ๏ธ Project Dev Log] 2022-01-07 (0) | 2022.01.08 |
[โ๏ธ Project Dev Log] 2022-01-05 (0) | 2022.01.06 |
[โ๏ธ Project Dev Log] 2022-01-04 (0) | 2022.01.04 |
[โ๏ธ Project Dev Log] 2022-01-03 (0) | 2022.01.04 |