Forgejo・Gitea の「token does not have at least one of required scope(s)」
「トークンに、求める権限(スコープ)のどれも付いていない」という意味です。アクセストークンは有効ですが、この API の呼び出しに要る権限を付けずに作られています。サーバーは HTTP 403 で断り、受け付ける権限を文の中に書いています。どれか1つあれば足ります。それを付けてトークンを作り直し、古いトークンを入れていた所を差し替えます。
答えの全体
Forgejo の答えです(code.forgejo.org での公開の報告より)。Gitea 1.22 以前も同じ形です。
HTTP 403
{"message": "token does not have at least one of required scope(s): [read:organization]",
"url": "https://code.forgejo.org/api/swagger"}
Gitea 1.23 以降は、トークンがいま持っている権限も書きます(公開の報告より)。
{"message": "token does not have at least one of required scope(s), required=[read:user], token scope=write:package,write:issue,write:repository",
"url": "https://<gitea-host>/api/swagger"}
角かっこの中が足す権限です。ソースでは、GET には read、POST・PUT・PATCH・DELETE には write を求めます。なので read:repository だけのトークンは、最初のマージやレビューでこの答えになります(Forgejo・Gitea)。道具によっては「403 Forbidden」しか出しません。文を見るには、失敗した住所を curl で呼びます。
curl -i -H "Authorization: token your-token" "https://codeberg.org/api/v1/the/address/that/failed"
答えが 401 で、「token is required」や、ユーザーやトークンが存在しないという文なら、トークンが届いていないか、サーバーがそのトークンを知りません。401 と知らないトークンへの答えへ。
プルリクの道具に要る権限
Forgejo の権限の説明は、権限を API の住所ごとにまとめています。
- repository:
/repos/*(issue の住所を除く)。プルリク・ファイル・コミット・レビュー・マージ。読むなら read:repository、作成・レビュー・マージには write:repository。 - issue:
issues/*・ラベル・マイルストーン。プルリクは issue でもあるので、プルリクの会話(コメントとタイムライン)はこちらの住所から来ます。読むなら read:issue、コメントするなら write:issue。プルリクのタイムラインを読もうとして[read:issue]で断られた公開の報告があります。 - user:
/userと/users/*。多くの道具は、あなたが誰かを知るために最初に/userを呼ぶので、read:user が無いとそこだけで失敗します(Codeberg での報告)。 - organization:
orgs/*とteams/*。組織やチームを一覧にする道具が使います。
同じまとまりの中では write は read を含みますが、まとまりどうしは含み合いません。write:repository があっても会話は読めず、read:issue が要ります。
権限を付けてトークンを作る
- 自分のアイコン → Settings(設定)→ Applications(アプリケーション)。住所はサーバーの
/user/settings/applicationsです(例:https://codeberg.org/user/settings/applications)。 - Access tokens の Generate new token で、名前と Repository and organization access(どのリポジトリと組織に使うか)を選び、Select permissions でまとまりごとに Read か Read and write を選ぶ。今までのものに、文の中の権限を全部足す。
- Generate token を押してコピーする。サーバーは、もう表示しないと書いています。
- 古いトークンを入れていた所に新しいトークンを入れ、同じ画面で古い方を Delete(削除)する。
IntelliJ IDEA で Forgejo・Gitea のプルリクを見るなら
Pull Request Inbox for Forgejo and Gitea は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。read:repository・read:issue・read:user で読み、write:repository と write:issue で承認・コメント・マージをします。サーバーがこの文で答えたときは、その文と、トークンに要る権限を画面に出し、設定を開けるようにします。設定には、お使いのサーバーのトークンのページへのリンクがあります。受信箱・差分・会話は無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
Forgejo・Gitea・Codeberg はそれぞれの持ち主の名前、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Forgejo プロジェクト・Codeberg e.V.・Gitea プロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:404「The target couldn't be found.」「not found」 · Forgejo・Gitea のマージの断り(405・409) · Forgejo・Gitea のレビューの断り(422) · Forgejo・Gitea のブランチの更新の断り(403・409・422) · Forgejo・Gitea のプルリクが作れない(409・422・403) · Forgejo・Gitea のコメントの断り(403・422・400) · Forgejo・Gitea の検索の断り(400・422) · Forgejo・Gitea のプルリクの変更ファイル(50件ずつ・changed_files) · JetBrains の IDE で Forgejo・Gitea のプルリクを扱う · English