Skip to content

wafflestudio20-5/team6-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ฝ Wafflemate

TodoMate ์–ดํ”Œ์„ ์ฐธ๊ณ ํ•˜์—ฌ Wafflemate ์–ดํ”Œ์„ ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์•ฑ์— ์—†๋Š” ํŒ”๋กœ์šฐ์ฐจ๋‹จ ๊ธฐ๋Šฅ, ์‹œ๊ฐ„์ฒดํฌ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ SNS ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ์ผ์ •๊ด€๋ฆฌ ์‚ฌ์šฉ์„ฑ์„ ๋†’ํ˜”์Šต๋‹ˆ๋‹ค.


๐Ÿ‘ญ"์™€ํ”Œ๋ฉ”์ดํŠธ" ๋Š” ์–ด๋–ค ์•ฑ์ธ๊ฐ€์š”?

์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ์ผ์ •๊ด€๋ฆฌ, ์™€ํ”Œ๋ฉ”์ดํŠธ!

์ผ์ •๊ด€๋ฆฌ์™€ ๋”๋ถˆ์–ด ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰์ด ๊ฐ€๋Šฅํ•œ SNS ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ผ์ •/์ผ๊ธฐ ๊ณต์œ ๋ฅผ ํ†ตํ•ด ํšจ๊ณผ์ ์ธ ์ผ์ •๊ด€๋ฆฌ๋ฅผ ๊ฒฝํ—˜ํ•˜์„ธ์š”.

๐Ÿ”€ ์›Œํฌํ”Œ๋กœ์šฐ

image

๐Ÿš€ ๊ธฐ์ˆ ์Šคํƒ

image

๐Ÿ”จ ๋งŒ๋“  ์‚ฌ๋žŒ

| ์†ก๊ฑด์šฐ(Gitsgwoo) | ์ง„์ฑ„์—ฐ(hzlcodus) | ์˜ค๋™๊ฑด(ho2921ho) |

๐Ÿ“„ ํŽ˜์ด์ง€ ์„ค๋ช…


์†ก๊ฑด์šฐ(Gitsgwoo)

1. ์‹œ์ž‘ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ1

2. ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ2

3. ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ3

4. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ4

์ž๋™ ๋กœ๊ทธ์ธ

  • ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ์— ์•ฑ์˜ shared preference์— access token, refresh token, ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์ฆ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” data class AuthInfo ๋ฅผ ๋งŒ๋“ค๊ณ  ์ธ์ฆ ์ •๋ณด๋ฅผ AuthStorage class์˜ ๋ณ€์ˆ˜ authInfo์— StateFlow์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์•ฑ์˜ startdestination์„ ๋ฉ”์ธํŽ˜์ด์ง€๋กœ ์„ค์ •ํ•ด๋†“๊ณ , ๋ฉ”์ธํŽ˜์ด์ง€์˜ lifecycle ์ค‘ OnViewCreated ์—์„œ ์‚ฌ์šฉ์ž์˜ authInfo ๊ฐ’์ด null์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ’์ด null์ด๋ผ๋ฉด ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘์ฒฉ๊ทธ๋ž˜ํ”„ login_graph๋กœ navigate ๋ฉ๋‹ˆ๋‹ค.

login_graph : ์‹œ์ž‘ ํŽ˜์ด์ง€, ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€, ์ด๋ฉ”์ผ ์ธ์ฆ ํŽ˜์ด์ง€, ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ

5. ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ5

6. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ6

7. ๋ฉ”์ธ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ7


์ง„์ฑ„์—ฐ(hzlcodus)

8. ํƒ์ƒ‰ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ8

9. ํŒ”๋กœ์ž‰ ๋ชฉ๋ก ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ9

10. ํŒ”๋กœ์›Œ ๋ชฉ๋ก ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ10

11. ์ฐจ๋‹จ ๋ชฉ๋ก ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ11

12. ์Šฌ๋ผ์ด๋“œ ๋ฉ”๋‰ด

์Šฌ๋ผ์ด๋“œ12


์˜ค๋™๊ฑด(ho2921ho)

13. ๊ณ„์ • ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ13

14. ํ”„๋กœํ•„ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ14

15. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ณ€๊ฒฝ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ15


์ง„์ฑ„์—ฐ(hzlcodus)

16. ํ• ์ผ ๋ชฉ๋ก ๋ฐ ๋‹ฌ๋ ฅ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ16

17. ํ• ์ผ ์ž‘์„ฑ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ17

18. ํ• ์ผ ์ˆ˜์ • ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ18


์†ก๊ฑด์šฐ(Gitsgwoo)

19. ์ผ๊ธฐ ๋‹ฌ๋ ฅ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ19

20. ์ผ๊ธฐ ๋ชฉ๋ก ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ20

21. ์ผ๊ธฐ ์ž‘์„ฑ ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ21

22. ์ผ๊ธฐ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ22

23. ๋Œ“๊ธ€ ๋ชฉ๋ก ํŽ˜์ด์ง€

์Šฌ๋ผ์ด๋“œ23

ํ—ค๋”์— ํ† ํฐ ์ž๋™ ์ถ”๊ฐ€ ๋ฐ ์ž๋™ refresh ๊ธฐ๋Šฅ

ํ† ํฐ ์ž๋™ ์ถ”๊ฐ€

  • retrofit ๋ฐ okhttp3์˜ interceptor ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ access token์„ ์ž๋™์œผ๋กœ Authorization ํ—ค๋”์— ๋„˜๊ฒจ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์ตœ์ดˆ ๋กœ๊ทธ์ธ ๋˜๋Š” ์žฌ๋กœ๊ทธ์ธ ์‹œ์—๋Š” access token์„ ๋„˜๊ฒจ์ค„ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— if ๋ฌธ์„ ํ†ตํ•ด์„œ Authorization ํ—ค๋”์— ๋นˆ String์„ ๋„˜๊ฒจ์ฃผ๋„๋ก ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ† ํฐ ์ž๋™ refresh

  • access token์˜ ์œ ํšจ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” 401 ์—๋Ÿฌ๋ฅผ catchํ•˜์—ฌ, sharedPreference์— ์ €์žฅ๋œ refresh token์„ ์‚ฌ์šฉํ•ด access token์„ ์žฌ๋ฐœ๊ธ‰ ๋ฐ›๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • sharedPreference์— ์žฌ๋ฐœ๊ธ‰๋œ ํ† ํฐ์„ ์ €์žฅํ•œ ํ›„ chain ์˜ Request ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•ด ์žฌ๋ฐœ๊ธ‰ํ•œ ํ† ํฐ์„ ํ—ค๋”์— ๋„ฃ๊ณ  ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ด๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • refresh token์œผ๋กœ access token์„ ์žฌ๋ฐœ๊ธ‰ํ•˜๋Š” ๋กœ์ง์€ Request.Builder()๋ฅผ ์‚ฌ์šฉํ•ด refreshRequest๋ฅผ ์ƒ์„ฑํ•˜์—ฌ OkHttpClient().newCall(refreshRequest).execute()๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋„˜๊ธฐ๋„๋ก ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages