OAuth apps์์ GitHub Apps(์ผ)๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฒฝ์ฐ์ ํํ
GitHub Apps์(๋) GitHub์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. GitHub Apps์(๋) OAuth apps์ ๋นํด ๋ค์์ ํฌํจํ ๋ง์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ์ธ๋ถํ๋ ์ฌ์ฉ ๊ถํ, ๋ฆฌํฌ์งํ ๋ฆฌ ์ก์ธ์ค์ ๋ํ ์ ํ ๋ฐ ๋จ๊ธฐ ์คํ ํ ํฐ๊ณผ ๊ฐ์ ํฅ์๋ ๋ณด์ ๊ธฐ๋ฅ
- ์ฌ์ฉ์์ ๋ ๋ฆฝ์ ์ผ๋ก ๋๋ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์์ ํ ์ ์๋ ๊ธฐ๋ฅ
- ํ์ฅ์ฑ ์๋ ํธ๋ํฝ๋ฅ ์ ํ
- ๊ธฐ๋ณธ ์ ๊ณต ์นํํฌ
์์ธํ ๋ด์ฉ์ GitHub ์ฑ ๋ง๋ค๊ธฐ ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
OAuth app์(๋ฅผ) GitHub App(์ผ)๋ก ๋ณํ
๋ค์ ๋จ๊ณ์์๋ OAuth app์์ GitHub App(์ผ)๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ํน์ ๋จ๊ณ๋ ์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
1. OAuth apps์ ๊ฒํ
OAuth app์ ๋ํ ์ฝ๋๋ฅผ ๋ค์ ์์งํฉ๋๋ค. OAuth app์ ๋ํ API ์์ฒญ์ GitHub App์ ๋ํด ์ ํํ ๊ถํ์ ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ํ OAuth apps์ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง REST API ์๋ํฌ์ธํธ๊ฐ ์์ต๋๋ค. GitHub ์ฑ ์ค์น ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํ ์ ์๋ ์๋ํฌ์ธํธ ์(๋ฅผ) ๊ฒํ ํ์ฌ GitHub Apps์ ์ฌ์ฉํ๋ REST ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
2. GitHub App ๋ฑ๋ก
์๋ฃ์ด GitHub App ๋ฑ๋ก ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ๋ฑ๋ก์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
OAuth app์ ๋นํด GitHub App ์ค์ ์ ๋ ์ ์ ์ดํ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ฃผ์ ์ถ๊ฐ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
ํญ์ ์ฌ์ฉ์๋ฅผ ๋์ ํ๋ OAuth app ์(๊ณผ) ๋ฌ๋ฆฌ GitHub App์์ ์ฌ์ฉ์๋ก ํน์ ์ฌ์ฉ์ ๋์ ๋์์ ์ํํ๊ฒ ํ ์ ์์ต๋๋ค. ์ GitHub App์ด(๊ฐ) ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ๋์์ ์ํํ์ง ์๋๋ก ํ๋ ค๋ฉด "์ฌ์ฉ์ ์๋ณ ๋ฐ ๊ถํ ๋ถ์ฌ" ์ค์ ์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ์ฌ์ฉํ ์ธ์ฆ ์ ๋ณด์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
์นํํฌ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ GitHub App์ ์๋ฆด ์ ์์ต๋๋ค. ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ ์กฐ์ง์ API๋ฅผ ํตํด ๊ตฌ์ฑํด์ผ ํ๋ OAuth apps์ ์นํํฌ์ ๋ฌ๋ฆฌ ์นํํฌ๋ GitHub Apps์ ๊ธฐ๋ณธ ์ ๊ณต๋ฉ๋๋ค. GitHub App์(๋ฅผ) ๋ฑ๋กํ ๋ ์์ ํ๋ ค๋ ์นํํฌ ์ด๋ฒคํธ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋ํ OAuth app์์ ํ์ฌ ํด๋ง์ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๋ ๊ฒฝ์ฐ ๋์ ์นํํฌ๋ฅผ ๊ตฌ๋ ํ์ฌ GitHub App์ด(๊ฐ) ํธ๋ํฝ๋ฅ ์ ํ ๋ด์์ ์ ์ง๋๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ์นํํฌ ์ฌ์ฉ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
-
OAuth app์์๋ ์ฌ์ฉ์๊ฐ ์ฑ์ ๊ถํ์ ๋ถ์ฌํ ๋ ๋ฒ์๋ฅผ ์์ฒญํฉ๋๋ค. GitHub App์์๋ ์ฑ ์ค์ ์์ ์ฌ์ฉ ๊ถํ์ ์ง์ ํฉ๋๋ค. ์ด๋ฌํ ๊ถํ์ ๋ฒ์๋ณด๋ค ์ธ๋ถํ๋์ด ์์ผ๋ฉฐ ์ฑ์ ํ์ํ ๊ถํ๋ง ์ ํํ ์ ์๋๋ก ํฉ๋๋ค. ๋ํ ์ด๋ฌํ ๊ถํ์ REST API ์๋ํฌ์ธํธ ๋ฐ ์นํํฌ ์ด๋ฒคํธ์ ๋งคํ๋๋ฏ๋ก ํน์ REST API ์๋ํฌ์ธํธ์ ์ก์ธ์คํ๊ฑฐ๋ ํน์ ์นํํฌ๋ฅผ ๊ตฌ๋ ํ๊ธฐ ์ํด GitHub App์ ํ์ํ ๊ถํ์ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค. GraphQL ์์ฒญ์ ๋ํ ์ฌ์ฉ ๊ถํ์ ํ์ฌ ๋ฌธ์ํ๋์ด ์์ง ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ๊ถํ ์ ํ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
3. ์ฑ์ ์ฝ๋ ์์
GitHub App์(๋ฅผ) ๋ฑ๋กํ ํ ์ด์ OAuth app์ ์ฝ๋๋ฅผ ์กฐ์ ํ์ฌ ์ GitHub App์(๋ฅผ) ์ฌ์ฉํฉ๋๋ค.
์ธ์ฆ ์ ๋ฐ์ดํธ
GitHub App์ ๋ํ API ์ธ์ฆ์ ์ฒ๋ฆฌํ๋๋ก ์ฑ์ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. GitHub App์(๋) ๋ค์๊ณผ ๊ฐ์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ฆํ ์ ์์ต๋๋ค.
- ์ฑ ์์ฒด๋ก์ GitHub App ๋ฑ๋ก์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์์ ํฉ๋๋ค. ๋๋ ์ค์น ์ก์ธ์ค ํ ํฐ์ ๋ง๋ญ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ผ๋ก ์ธ์ฆ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
- ์ฑ ์ค์น๋ ์ค์ค๋ก๋ฅผ ๋์ ํ์ฌ ๋์์ ์ํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ ์ค์น๋ก ์ธ์ฆ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
- ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ ์ฌ์ฉ์์๊ฒ ์์ ์ ํ ๋นํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ GitHub ์ฑ์ผ๋ก ์ธ์ฆ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
GitHub์ ๊ณต์ Octokit.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ ๊ณต App
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆํ ์ ์์ต๋๋ค. ์๋ REST API ๋ฐ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํ
๋ฐ ์นํํฌ ์ด๋ฒคํธ์ ์๋ตํ๋ GitHub ์ฑ ๋น๋์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
ํธ๋ํฝ๋ฅ ์ ํ ๊ฒํ
OAuth apps ์ GitHub Apps์ ํธ๋ํฝ๋ฅ ์ ํ ์ฐจ์ด๋ฅผ ๊ฒํ ํฉ๋๋ค. GitHub Apps์(๋) ํธ๋ํฝ๋ฅ ์ ํ์ ์ฌ๋ผ์ด๋ฉ ๊ท์น์ ์ฌ์ฉํ๋ฉฐ ์ด๋ ์กฐ์ง์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฐ ์ฌ์ฉ์ ์์ ๋ฐ๋ผ ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ํธ๋ํฝ๋ฅ ์ ํ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๊ฐ๋ฅํ๋ฉด ํธ๋ํฝ๋ฅ ์ ํ ๋ด์์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋๋๋ก ํด๋ง ๋์ ์กฐ๊ฑด๋ถ ์์ฒญ์ ์ฌ์ฉํ๊ณ ์นํํฌ๋ฅผ ๊ตฌ๋ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์กฐ๊ฑด๋ถ ์์ฒญ์ ๋ํ ์์ธํ ๋ด์ฉ์ REST API ์ฌ์ฉ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก์(๋ฅผ) ์ฐธ์กฐํ์ธ์. GitHub App์์ ์นํํฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ์นํํฌ ์ฌ์ฉ ๋ฐ ์นํํฌ ์ด๋ฒคํธ์ ์๋ตํ๋ GitHub ์ฑ ๋น๋์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฝ๋ ํ ์คํธ
์ GitHub App์(๋ฅผ) ํ ์คํธํ์ฌ ์ฝ๋๊ฐ ์์๋๋ก ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
4. ์ GitHub App ๊ณต๊ฐ
๋ค๋ฅธ ๊ณ์ ์์ ์ GitHub App์(๋ฅผ) ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ค๋ฉด ์ฑ์ด ๊ณต๊ฐ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. GitHub App์(๋ฅผ) ๊ฒ์ํ ์ ์๋๋ก ํ๋ ค๋ฉด GitHub Marketplace์ ์ฑ์ ๋์ดํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฑ์ฉ GitHub Marketplace ์ ๋ณด ๋ฐ ๊ณต๊ฐ ๋๋ ๋น๊ณต๊ฐ GitHub ์ฑ ๋ง๋ค๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
5. ์ฌ์ฉ์์๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ์ง์
์ GitHub App์ด(๊ฐ) ์ค๋น๋๋ฉด ์ด์ OAuth app์ ์ฌ์ฉ์์๊ฒ ์ GitHub App์ผ(๋ก) ๋ง์ด๊ทธ๋ ์ด์ ํ๋๋ก ์ง์ํฉ๋๋ค. ์ฌ์ฉ์๋ฅผ ์๋์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ๊ฐ ์ฌ์ฉ์๋ GitHub App์(๋ฅผ) ์ง์ ์ค์นํ๊ฑฐ๋ ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
์ฑ ์์ ์๋ ์ฌ์ฉ์๊ฐ ์ GitHub App์(๋ฅผ) ์ค์น/์น์ธํ๊ณ ์ด์ OAuth app์ ๋ํ ๊ถํ ๋ถ์ฌ๋ฅผ ์ทจ์ํ๋๋ก ๊ถ์ฅํ๋ ์์ ํธ์ถ์ ํฌํจํด์ผ ํฉ๋๋ค. ์ค๋ช ์ ๋๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
GitHub App์(๋ฅผ) ์ค์นํ๋ผ๋ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉ์์๊ฒ ํ์ํฉ๋๋ค.
GitHub App์(๋ฅผ) ๋์ ํ์ฌ API ์์ฒญ์ ํ๊ฑฐ๋ ์กฐ์ง ๋๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ GitHub App์(๋ฅผ) ์ค์นํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ณ์ ๋๋ ์กฐ์ง์ GitHub App์(๋ฅผ) ์ค์นํ ๋ ์ฑ์ด ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํ๊ณ ์ฑ์ ์์ฒญํ ์กฐ์ง ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
์ฌ์ฉ์๊ฐ GitHub App์(๋ฅผ) ์ค์นํ ์ ์๋๋ก ํด๋ฆญํ์ฌ GitHub App์(๋ฅผ) ์ค์นํ ์ ์๋ ์ฑ์ ์น ํ์ด์ง์ ๋ํ ๋งํฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ค์น URL์ ํ์์ https://github.com/apps/YOUR_APP_NAME/installations/new
์ ๊ฐ์ต๋๋ค. GitHub App์ ์ค์ ํ์ด์ง์ "๊ณต๊ฐ ๋งํฌ" ํ๋์์ ์ฐพ์ ์ ์๋ GitHub App์ ์ฌ๋ฌ๊ทธํ๋ ์ด๋ฆ์ผ๋ก YOUR_APP_NAME
์(๋ฅผ) ๋ฐ๊ฟ๋๋ค.
OAuth app์์ ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ ํํ๋ ค๋ฉด ์ค์น URL์ /permissions
๋ฐ ์ฟผ๋ฆฌ ๋งค๊ฐ ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์๊ฐ OAuth app์ ์ด๋ฏธ ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ GitHub App์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ ๋งค๊ฐ ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
suggested_target_id
: GitHub App์(๋ฅผ) ์ค์นํ๋ ์ฌ์ฉ์ ๋๋ ์กฐ์ง์ ID์ ๋๋ค. ์ด ๋งค๊ฐ ๋ณ์๋ ํ์์ ๋๋ค.repository_ids[]
: ์ค์น๋ฅผ ์ํด ์ ํํ ๋ฆฌํฌ์งํ ๋ฆฌ ID์ ๋๋ค. ์๋ต๋๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค. ๋ฏธ๋ฆฌ ์ ํํ ์ ์๋ ์ต๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์๋ 100๊ฐ์ ๋๋ค. OAuth app ์ฑ์์ ์ก์ธ์คํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ชฉ๋ก์ ์ป์ผ๋ ค๋ฉด ์ธ์ฆ๋ ์ฌ์ฉ์์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๊ฑฐ ๋ฐ ์กฐ์ง ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๊ฑฐ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์: https://github.com/apps/YOUR_APP_NAME/installations/new/permissions?suggested_target_id=ID_OF_USER_OR_ORG&repository_ids[]=REPO_A_ID&repository_ids[]=REPO_B_ID
GitHub Apps์(๋ฅผ) ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ฐ์ธ ๊ณ์ ์ ์ํด GitHub ๋ง์ผํ๋ ์ด์ค์์ GitHub ์ฑ ์ค์น, ์กฐ์ง์ฉ GitHub ๋ง์ผํ๋ ์ด์ค์์ GitHub ์ฑ ์ค์น, ํ์ฌ์์ GitHub ์ฑ ์ค์น ๋ฐ ์์ ๋ง์ GitHub ์ฑ ์ค์น ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์์๊ฒ ์ฑ์ ๊ถํ์ ๋ถ์ฌํ๋ผ๋ ํ๋กฌํํธ ํ์
GitHub App์์ ์ฌ์ฉ์๋ฅผ ๋์ ํ์ฌ API ์์ฒญ์ ํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ ์ฑ์ ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฑ์ ๊ถํ์ ๋ถ์ฌํ๋ฉด ์ฑ์ด ๋์ ์ฌ์ฉํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๊ณ ์ฑ์์ ์์ฒญํ ๊ณ์ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ์ฑ์ด ์กฐ์ง ๊ณ์ ์ ์ค์น๋ ๊ฒฝ์ฐ ํด๋น ์กฐ์ง ๋ด์ ๊ฐ ์ฌ์ฉ์๋ ์ฑ์ด ๋์ ์๋ํ๋๋ก ์ฑ์ ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์์๊ฒ ์ฑ์ ๊ถํ์ ๋ถ์ฌํ๋ผ๋ ํ๋กฌํํธ๋ฅผ ํ์ํ๋ ค๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ฆ ๋๋ ๋๋ฐ์ด์ค ํ๋ฆ์ ํตํด ์ฌ์ฉ์๋ฅผ ์๋ดํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ๋ํ ์ฌ์ฉ์ ์ก์ธ์ค ํ ํฐ ์์ฑ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
GitHub Apps ๊ถํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ GitHub ์ฑ์ ๊ถํ ๋ถ์ฌ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์๊ฐ OAuth app ์ก์ธ์ค๋ฅผ ์ฒ ํํ๋๋ก ๊ถ์ฅ
๋ํ ์ฌ์ฉ์๊ฐ ์ด์ OAuth app์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์ฒ ํํ๋๋ก ๊ถ์ฅํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด OAuth app์์ ์์ ํ ์ ํํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ถํ ์๋ OAuth ์ฑ ๊ฒํ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ธํฐํ์ด์ค ๋๋ ์ค๋ช ์ ์ ๋ฐ์ดํธ
OAuth app์์ GitHub App์ผ(๋ก) ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๋ฐ์ํ๋๋ก ์ฑ๊ณผ ๊ด๋ จ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋๋ ์ค๋ช ์๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
6. ์ด์ OAuth app์ ๋ํ ์นํํฌ ์ ๊ฑฐ
์ฌ์ฉ์๊ฐ GitHub App์(๋ฅผ) ์ค์นํ๊ณ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๊ฒฝ์ฐ ์ด์ OAuth app ์ ๋ํ ์นํํฌ๋ฅผ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ์ GitHub App ๋ฐ ์ด์ OAuth app์ด(๊ฐ) ๋์ผํ ์ด๋ฒคํธ์ ๋ํ ์นํํฌ์ ์๋ตํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ ์ค๋ณต ๋์์ ๊ด์ฐฐํ ์ ์์ต๋๋ค.
๋ฆฌํฌ์งํ ๋ฆฌ ์นํํฌ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด added
์์
์ผ๋ก installation_repositories
์นํํฌ๋ฅผ ์์ ๋๊ธฐ ํ ์ ์์ต๋๋ค. GitHub App์ด(๊ฐ) ํด๋น ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ฉด REST API๋ฅผ ์ฌ์ฉํ์ฌ OAuth app์ ๋ํ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์นํํฌ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์นํํฌ ์ด๋ฒคํธ ๋ฐ ํ์ด๋ก๋ ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ์นํํฌ์ ๋ํ REST API ์๋ํฌ์ธํธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
๋ง์ฐฌ๊ฐ์ง๋ก ์กฐ์ง ์นํํฌ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด created
์์
์ผ๋ก installation
์นํํฌ๋ฅผ ์์ ๋๊ธฐ ํ ์ ์์ต๋๋ค. GitHub App์ด(๊ฐ) ์กฐ์ง์ ๋ํด ํด๋น ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ฉด REST API๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์กฐ์ง์ ์นํํฌ ๋ฐ OAuth app์ ๋ํ ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์นํํฌ ์ด๋ฒคํธ ๋ฐ ํ์ด๋ก๋, ์กฐ์ง ์นํํฌ์ ๋ํ REST API ์๋ํฌ์ธํธ, ๋ฆฌํฌ์งํ ๋ฆฌ ์นํํฌ์ ๋ํ REST API ์๋ํฌ์ธํธ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
7. ์ด์ OAuth app ์ญ์
์ฌ์ฉ์๊ฐ ์ GitHub App์ผ(๋ก) ๋ง์ด๊ทธ๋ ์ด์ ๋๋ฉด ์ด์ OAuth app์(๋ฅผ) ์ญ์ ํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด OAuth app์ ์๊ฒฉ ์ฆ๋ช ์ด ๋จ์ฉ๋์ง ์๋๋ก ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด ์์ ์ OAuth app ์ฑ์ ๋๋จธ์ง ๊ถํ ๋ถ์ฌ๋ ๋ชจ๋ ์ฒ ํํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ OAuth ์ฑ ์ญ์ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์. OAuth app์ด(๊ฐ) GitHub Marketplace์ ๋์ด๋ ๊ฒฝ์ฐ ๋จผ์ GitHub ์ง์์ ๋ฌธ์ํ์ฌ ๋ง์ผํ๋ ์ด์ค์์ ์ฑ์ ์ ๊ฑฐํด์ผ ํ ์ ์์ต๋๋ค.