# Github OAUTH

> GitHub OAuth認証の仕様。認証フロー、トークン管理、セッション永続化に関する情報。 Use when this capability is needed.

- Skill: `tomevault-io/github-oauth` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/github-oauth`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/github-oauth/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/github-oauth

---


# GitHub OAuth

## OAuth App vs GitHub App

| 項目 | OAuth App (このプロジェクト) | GitHub App |
|------|------------------------------|------------|
| トークン有効期限 | **無期限** | 8時間 |
| リフレッシュトークン | なし | あり |
| 無効化条件 | ユーザー取り消し/App削除/revoke API | 期限切れ/取り消し |

## 認証フロー

```
1. ユーザー → GitHub認証ページにリダイレクト
2. GitHub → コールバックURLに `?code=xxx` 付きでリダイレクト
3. `code` をアクセストークンに交換（exchange_code_for_token）
4. セッションをFirestoreに保存、session_idをCookieに設定（7日間有効）
5. 次回アクセス時: Cookieからsession_id取得 → Firestoreからセッション復元
```

## セッション永続化

| 保存先 | 内容 | 有効期限 |
|--------|------|----------|
| Cookie | session_id (UUID) | 7日間 |
| Firestore `sessions` | user_id, access_token, user_data, last_accessed_at | 7日間（last_accessed_at基準） |

### Cookie取得のretry

CookieManagerは非同期で動作するため、初回呼び出しでNoneが返る可能性あり。
`get_session_cookie()`で最大3回retryし、取得できなければ未ログインとして扱う。

## Key Files

| File | Purpose |
|------|---------|
| `services/auth.py` | OAuth認証、トークン交換、セッション復元・永続化 |
| `services/session.py` | Firestore/Cookieセッション管理 |

## トークン無効化条件

- ユーザーがGitHub設定からアプリのアクセスを取り消し
- OAuth App自体が削除された
- `DELETE /applications/{client_id}/token` で明示的に無効化
- **7日間アクセスなし** → Firestoreセッション削除

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/mnbst) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-13 -->

