Bitbucket の「Your credentials lack one or more required privilege scopes.」
「資格情報に必要な権限が1つ以上足りない」という意味です。API トークンは有効ですが、この呼び出しに要る権限(スコープ)を付けずに作られています。Bitbucket Cloud は HTTP 403 で断り、足りない権限を答えの中に書いています。それを含めて API トークンを作り直し、古いトークンを入れていた所を差し替えます。
答えの全体
実際の例です。プルリク用に作ったトークンで GET /2.0/user を呼んだもの(公開のバグ報告より):
HTTP 403
{"type": "error", "error": {
"message": "Your credentials lack one or more required privilege scopes.",
"detail": {
"required": ["read:user:bitbucket"],
"granted": ["write:repository:bitbucket", "read:pullrequest:bitbucket", "write:pullrequest:bitbucket", "read:repository:bitbucket"]}}}
required が足す物、granted がトークンの持っている物です。道具によっては文の1行目しか見せなかったり、答えを途中で切ったりするので、一覧が届かないことがあります。同じアドレスを curl で呼べば見えます。
curl -u 'Atlassianのメールアドレス:APIトークン' https://api.bitbucket.org/2.0/user
git では「remote: Your credentials lack one or more required privilege scopes.」
git は同じ拒否を、頭に remote: を付けて出し、続けて 403 を出します。pull はできて tag の push だけができなかった、Atlassian Community の質問(2022年2月)から:
remote: Your credentials lack one or more required privilege scopes. fatal: unable to access 'https://<user>@bitbucket.org/<path>/<repo>.git/': The requested URL returned error: 403
git が出すのは答えの1行目だけで、required(要る権限)と granted(持っている権限)の一覧は出ません。API トークンで git を使うには、clone・fetch・pull に read:repository:bitbucket、push(tag も含む)にはさらに write:repository:bitbucket が要ります。pull はできて push ができないなら、トークンに書き込みの権限がありません。403 では git は保存したトークンを忘れません(忘れるのは 401 のときだけ。410 のページと同じ)。新しいトークンを作ったら、古いものを git の資格情報ヘルパーから消し、git に聞かれたら新しいものを入れます。
プルリクの道具に要る権限
Atlassian の API token permissions(英語)より:
- read:repository:bitbucket:リポジトリのデータを見る。
- read:pullrequest:bitbucket:プルリクを見る。コメントもこれでできる。
- write:pullrequest:bitbucket:プルリクの作成・更新・承認・却下(decline)・マージ。
- read:user:bitbucket:今のユーザーのデータ。多くの道具は最初に
/2.0/userで「誰か」を確かめるので、これが無いとその1回だけで失敗します。 - write:repository:bitbucket:リポジトリを変える(コードの push を含む)。
権限どうしは互いを含みません。Atlassian の表には、プルリクの読み取りはリポジトリの読み取りを含まない、プルリクの書き込みはリポジトリの書き込みを含まない、リポジトリの書き込みはリポジトリの読み取りを含まない、とあります。write:pullrequest だけ、read:pullrequest だけのトークンでも、横に read:repository が要ります。
トークンを作り直す
- 右上のプロフィール → Account settings → Security タブ → Create and manage API tokens。
- Create API token with scopes:名前と有効期限、アプリは Bitbucket、権限は今までの物に required の物をすべて足して選ぶ。
- トークンを控える。Atlassian は一度しか表示せず、後から取り出せません。
- 古いトークンを入れていた所に新しいトークンを入れ、同じ画面で古い方を取り消す(Revoke)。
Git の HTTPS(プルには read:repository、プッシュには write:repository)は、Git を API トークンに切り替える手順へ。
IntelliJ IDEA で Bitbucket のプルリクを見るなら
Pull Request Inbox for Bitbucket は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud には Atlassian の API トークンで入ります。読むには read:pullrequest・read:repository・read:user、承認・マージもするなら write:pullrequest を足します。Bitbucket が断ったときは、required の権限と、どれを足せばよいかを画面に出します。受信箱・差分・議論は無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
Bitbucket と Atlassian は Atlassian の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・JetBrains のいずれとも提携しておらず、承認も受けていません。