やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubアカウント作成コマンドにて生成したTokenをDBに登録する

その処理を書いた。

成果物

GitHubGitHub.Upload.UserRegister.Insert.Token.201704031122

開発環境

前回まで

http://ytyaru.hatenablog.com/entry/2017/10/30/000000

気づいた問題

リポジトリ編集APIにはrepo権限が必要だった

https://developer.github.com/v3/repos/#edit

リポジトリ編集APIにはrepo権限が必要だった。 仕様書(APIリファレンス)には書いていない。

repo権限がないTokenで認証しようとすると404エラーになった。 publicリポジトリならpublic_repo権限でもいいかもしれない。

仕様書は当てにならない。 今のソースコードでは、仕様書に権限が必要と明記されていないAPIはテキトーにTokenを選択していた。

もしかすると、じつは他にも何かの権限が必要なAPIがあるかもしれない。 これまで動作していたのは、たまたま必要な権限をもったTokenが選ばれていたからかもしれない。

修正箇所

/database/src/api/res/tsv/Apis.tsvファイルを修正する必要がある。DBファイルではGitHub.Apis.sqlite3ファイルのレコードを修正する必要がある。

before

Id   Name    HttpMethod  Endpoint    AuthMethods Grants  SuccessStatusCode   DocURL
...
4   Repositories.Edit   PATCH   repos/:owner/:repo  Basic,Token     200 https://developer.github.com/v3/repos/#edit
...

after

Id   Name    HttpMethod  Endpoint    AuthMethods Grants  SuccessStatusCode   DocURL
...
4   Repositories.Edit   PATCH   repos/:owner/:repo  Basic,Token repo    200 https://developer.github.com/v3/repos/#edit
...

リポジトリ編集APIレコードのGrants列にrepoを追加する。

所感

ほかのAPIの権限確認は面倒なので放置。次はSSH鍵テーブル作成。