概要
heroku login などでログインした場合に取得できるアクセストークンには期限があり 1 ヶ月で期限切れになります
期限切れになった場合は再度 heroku login を実行すれば良いのですがスクリプトなどで heroku コマンドを使っている場合は面倒です (ログインにブラウザを立ち上げる必要があるので)
その場合には期限切れのないトークンを生成しそのトークンを使って CLI を叩けるように設定します
環境
- macOS 11.6.6
- Heroku CLI 7.60.2
Long Lived Token の作成
以下で生成できます
- heroku authorizations:create
Long-lived user authorization xxx-xxx-xxx-xxx-xxx global
こんな感じで生成できれば OK です
生成されたトークンの ID (上記の xxx-xxx-xxx-xxx-xxx の部分) はメモしておきます
Long Lived Token のアクセストークンを取得する
ID から CLI をコールするためのアクセストークンを取得します
- heroku authorizations:info xxx-xxx-xxx-xxx-xxx
で確認できます
Client: <none>
ID: xxx-xxx-xxx-xxx-xxx
Description: Long-lived user authorization
Scope: global
Token: yyy-yyy-yyy-yyy-yyy
Updated at: Thu Jun 02 2022 08:26:43 GMT+0900 (日本標準時) (about 1 hour ago)
上記の yyy-yyy-yyy-yyy-yyy の部分がアクセスに必要なアクセストークンになります
このアクセストークンを使って CLI をコールするようにします
.netrc の編集
heroku コマンドの認証情報は ~/.netrc
に格納されています
vim ~/.netrc
machine api.heroku.com
login name1@example.com
password yyy-yyy-yyy-yyy-yyy
machine git.heroku.com
login name1@example.com
password yyy-yyy-yyy-yyy-yyy
上記のパスワードの部分を先程メモしたアクセストークンに書き換えます
書き換えたら保存します
動作確認
本当に期限のないトークンでコールできるか確認しましょう
- heroku auto:token
で問題なくアクセスできることと期限切れの警告が表示されないことを確認しましょう
もしまだうまく設定できていない場合は以下のように表示されるはずです
› Warning: token will expire tomorrow at 9:13 AM
› Use heroku authorizations:create to generate a long-term token
zzz-zzz-zzz-zzz-zzz
注意事項
理由は不明なのですが Long Lived Token を設定後に再度 heroku login すると設定を上書きしてしまうようです
また Long Lived Token のクライアントトークン自体も削除してしまうのでできれば設定後は heroku login しないほうが良いかもしれません
おまけ: 発行している OAuth クライアントの一覧を確認する方法
- heroku authorizations
最後に
Heroku CLI で期限切れにならないアクセストークンを設定する方法を紹介しました
使用していないクライアントトークンは heroku authorizations:revoke
コマンドで削除しても良いかなと思います
また revoke は Heroku のダッシュボード上からもできるのでどちらでも大丈夫です
0 件のコメント:
コメントを投稿