質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

744閲覧

herokuのログインに使われている仕組みについて教えて下さい

gochuumonha

総合スコア74

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

1クリップ

投稿2020/09/09 18:42

heroku cliを用いてherokuにログインするためには以下の流れで行うと思います。

1.ターミナルでheroku login
2.ブラウザが起動してherokuのサイトでログインを行う
3.ターミナルの方でもログインが完了する

この流れの中で2から3の部分が一体どのような仕組みで行われてるのか気になったのですが、私にはわかりませんでした。

少なくともブラウザ側のjsなどから、ログインしたという情報を端末内のプログラムに伝えることは難しいように感じます。

どのような仕組みを用いれば同じような実装が可能でしょうか。

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://github.com/heroku/heroku-cli-command/blob/cdf2287b56a39607bd58f045c74d949d4213adcb/src/login.ts#L133

ソースを読むと、

  1. まず /auth にPOST して、ブラウザでアクセスするURL1、CLIからアクセスするURL2、後のリクエストに使う一時token取得
  2. URL1をブラウザで開く
  3. CLIもURL2に HTTPリクエスト
    (が、これはレスポンスはすぐに返さないいわゆるロングポーリング
    (リトライ3回しているようなので、リクエストタイムアウト秒数 * 3 経過後にはエラーになるものと思われます。
    (コード読んだ限りそうというだけで、動作試してないので、違うかもしれません
  4. ブラウザでログイン完了
  5. Herokuの認証サーバー内で認証完了を検知して 3. のリクエストに対してレスポンスを返す
  6. 5.のレスポンスに認証トークンが含まれているので、CLIで保存

という感じに見えました。

投稿2020/09/12 06:21

編集2020/09/12 06:23
unhappychoice

総合スコア1531

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gochuumonha

2020/09/13 18:29

とても分かりやすい説明ありがとうございます! なるほど~、ちょっと自分での実装は難しそうですね。 でも、勉強になりました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問