{"id":22116072,"url":"https://github.com/halfenif/toy_oauth_backend_express_react","last_synced_at":"2026-04-30T18:31:45.187Z","repository":{"id":246343222,"uuid":"820785767","full_name":"halfenif/toy_oauth_backend_express_react","owner":"halfenif","description":"Google oAuth for redirect to backend","archived":false,"fork":false,"pushed_at":"2024-06-28T08:16:24.000Z","size":95,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T05:34:45.401Z","etag":null,"topics":["backend","express","oauth2","reack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/halfenif.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-27T07:13:39.000Z","updated_at":"2024-06-28T08:16:28.000Z","dependencies_parsed_at":"2025-03-24T05:30:31.852Z","dependency_job_id":"90bf8354-1b14-4094-86bc-4caf99dea079","html_url":"https://github.com/halfenif/toy_oauth_backend_express_react","commit_stats":null,"previous_names":["halfenif/toy_oauth_backend_express_react"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/halfenif/toy_oauth_backend_express_react","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfenif%2Ftoy_oauth_backend_express_react","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfenif%2Ftoy_oauth_backend_express_react/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfenif%2Ftoy_oauth_backend_express_react/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfenif%2Ftoy_oauth_backend_express_react/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/halfenif","download_url":"https://codeload.github.com/halfenif/toy_oauth_backend_express_react/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/halfenif%2Ftoy_oauth_backend_express_react/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32473804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","express","oauth2","reack"],"created_at":"2024-12-01T12:19:09.645Z","updated_at":"2026-04-30T18:31:45.172Z","avatar_url":"https://github.com/halfenif.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 2024.06.28\n## Google에서 제공하는 새로운 방식을 적용하면, 위에서 테스트 했던 모든 것이 의미가 없다고 판단됩니다. oAuth 구글한정으로 말입니다.\n\n[https://developers.google.com/identity/gsi/web/guides/migration?hl=ko#redirect-mode_1](https://developers.google.com/identity/gsi/web/guides/migration?hl=ko#redirect-mode_1)\n\n\n# toy_oauth_backend_express_react\n\n## Goal\n- This is simple code for STUDY\n- Google oAuth for redirect to backend\n- We need \"Authentication\" only\n\n## Installation\n**Requirements**\n- NPM\n\n### Clone\n```bash\ngit clone https://github.com/halfenif/toy_oauth_backend_express_react.git\n```\n\n## Change Config\n```bash\ncp .back/.env.sample .back/.env\n```\n\n## Google Console\n- Prepare the API authentication key information in Google Console\n- edit .env\n\n## Install node_module\n- front/install.sh\n- back/install.sh\n\n## Run Back * Front\n- back/run.sh\n- front/run_dev.sh\n\n\n## Issue\n- App.jsx:18 Warning: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.\n- Build해서 실행하면 발생 안하는데, Vite Dev에서 발생하는 이유는..? 안찾아보고 있습니다.\n\n## Below Korean Description\n### 이 녀석을 만들게된 이야기\n\nStreamlit으로 간단한 화면을 하나 만들고 있었는데, 인증이 필요한 상황이라 Google oAuth를 사용하기로 합니다. (한 3년전에 작업했던것을 다시 기억하며..)\n\n누군가가 [streamlit-oauth](https://github.com/dnplus/streamlit-oauth)라는 라이브러리를 만들어둔것을 발견하고 잘 적용을 했는데.. 생각 해 보니 좀 이상합니다.\n- 나는 인증만 필요한데?\n- Access Token을 왜 화면에다가 던지고 있지?\n- 인터넷에서 발견한 [OAuth 2.0 개념과 동작원리](https://hudi.blog/oauth-2.0/)라는 글을 잘 읽어봅니다.\n- \"oauth2 redirect front vs back\" 라는 주제로 검색도 해보고 물어도 봅니다.\n\u003e 아무리 생각해도 내가 원하는 것은 back으로 redirect하는 것입니다.\n- GPT에게 oauth redirect backend sample을 만들어 달라고 했더니... Express와 React로 만들어 줍니다. (어이..! 난 그거 모른다고.)\n\u003e 그냥 구글링하면서 진행하기로 합니다.\n- 설정후 테스트를 하면서 SCOPE에 대해 좀더 궁금한 점이 있어 테스트 해 봅니다.\n![Payload according to Google oAuth scope](/doc/payload_by_scope.png)\n- 역시 access token없이 내가 원하는 인증정보는 얻을수 있는것이었습니다.\n- PoC 해 본것을 GitHub에다가 던져넣고 이제 다시 streamlit으로 돌아갈것입니다.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalfenif%2Ftoy_oauth_backend_express_react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhalfenif%2Ftoy_oauth_backend_express_react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalfenif%2Ftoy_oauth_backend_express_react/lists"}