コールバックURLとは

# コールバックURLとは
**処理が終わった時とかに、このURLに遷移してのURL**
だいたいは、
自分のサイト　→　別のサイト　→　自分のサイト
みたいな流れを作りたい時に使うもの。



**イメージ** 以下で何となく理解出来たらいいなと思い作成しただけです！
<font color=red>**※以下はあくまでイメージ！下で詳しく説明します！**</font>
<font color=red>**※イメージのため実際は少し異なります。**</font>
例えば、tokenをurl上で返してそれを保存していますが、url上のものは見える確率高いのである程度使える時間制限したtokenを返し(よくワンタイムトークンとか言われている)、そのtokenで本当の認証を行いそれでもらったものをtokenとして保持するのが一般的かと

<img width="971" alt="スクリーンショット 2020-05-05 14.57.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/414031a6-5169-b576-57cc-580d980949bf.png">


## もう少し詳しく…

例えば自分で『みんなにこにこ、ニコニコサイト』を立ち上げているとします。

最初はこのサイトに記事を沢山あげるだけだったので別に何も必要なかったのですが、
ある時思ったのです。

なんかわかんないけど『ヤッホーサイト』と連携したいと…。
<div><img width="500" alt="スクリーンショット 2019-07-08 22.29.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/441f7103-1125-3a01-935f-6b770df4012d.png"></div>


なので連携したいサイトの『ヤッホーサイト』の担当者にお願いしました。

『あの〇〇とか〇〇とかするとかしてヤッホーサイトとして連携させたいんですが…』

それを聞いて、『ヤッホーサイト』の担当者はこころよく『いいよ！』と言ってくれました。

この返事を聞いてやった〜〜と思いました。

じゃ、この処理の時にヤッホーサイトを表示しよ！！っと

……。この時ふと思いました。

あれ、この時の処理にヤッホーサイトを表示、そのあとは？？？

ヤッホーサイトを表示したら、そのあとは？どうやって自分のサイトに戻ってきてもらうの？

不安に思った私はヤッホーサイトの担当者さんに聞いてみました。

『あの〇〇の処理をした時に、ヤッホーサイトを表示するじゃないですか？このあと自分のサイトに戻ってきて欲しいのですが…。それってできますか？事前に口頭とか書面でヤッホーサイトのこの処理のあとは私のページAページを、この時はBページをってのを書いて送ればそのようにしてくれますか？』

ヤッホーサイトの担当者はそれを聞いてなんだそんなことか！と言わんばかりにこう答えました。

『そんなことしなくていいって。私のヤッホーサイトアクセスするURLにコールバックURLみたいのつけてくれれば処理終わった後にそのコールバックURLにアクセスするようにするから、欲しい値とかあればアクセスするURLの後ろになんかつけとくよ！！！』


……????!!!!!コールバックURL????

チンプンカンプンな私にヤッホーサイトの担当者の方が具体的に教えてくれました。

例えば、君のあるページで私のサイトを表示するでしょ。その時にしてもらいたいこととかURLにつけるじゃん(｡･ω･｡)することが『sssの処理』ならこんな感じかな？
※記述 `surukoto=sss` ですることがsssの処理だとわかる
**http\://niconico.com →　http\://yaaaaaa.com?surukoto=sss**

この時に戻して欲しいページのURLもくっつけてくれればそれみてそのページにまた遷移する(いく)よってことかな。(｡･ω･｡)こんな感じ(もちろん『callbackURL』のところは各会社違います。あくまでこれは只の値ということを忘れないようにして頂ければと)
**http\://yaaaaaa.com?surukoto=sss&callbackURL=http\://niconico.com/about**

することの**sss**したら、**http\://niconico.com/about**に遷移。

**http\://yaaaaaa.com?surukoto=sss&callbackURL=http\://niconico.com/**

なら、
することの**sss**したら、**http\://niconico.com/**に遷移ってことになるね(✿´ ꒳ ` )

この時つける値あれば **http\://niconico.com/about?a=abcdesu**みたいにするよ！！！

つける値ってのは、『この処理して！この値ちょうだい！お願いっ！』って言われた時の[この値]のことね！

## もう少し、後もう少し詳しく。

もし自分のサイトにログイン機能がないけど、ログインしたいとか思ったとき、
ログインしているサイトに情報もらう的なことができるんだよね(｡･ω･｡)

ちょっと意味不明だよね。自分のところにはID、パスワード打つとこないわけなのね。
でもログインしたいわけ。

うん。言っている意味がわかんない。

よく何かのアプリ使っている時、ログインを他のアプリに任すようなアクションってない？

例えば、こんな感じ
**普通のログイン**
**facebookでのログイン**
**twitterでのログイン**
**yahooでのログイン**
…

facebookでのログインだと一回facebookの画面みたいの出るでしょ？
あれ、今使っているアプリ自体が表示しているんじゃなくて一回facebookのアプリ開いたり、webサイト開いたりして

『これやって〜』ってしてるの、そうすれば今使っているアプリにfacebookのパスとか知られないわけ。
だってfacebookでパスワード記入してるんだもん。

でも？あれ？じゃあどうやってログインするの？

ってなるじゃん。

ここで出てくるのが『トークン』ってものなんだよね。

ちなみに『トークン』ての長い自分にしか当てられていない文字列のこと。

例えば、
Aさん
Bさん
Cさん
みたいなユーザーさんがいたらみんな違った文字列。
こんな感じ
Aさん sasasa887dhshjssh…
Bさん sdkjgkjdkdjkfjdkas…
Cさん kdttjlkjfkl8sfslds…

話戻って、このトークンをfacebookに渡すとパスワードとかIDとか打たなくてもfacebookでログインしたということにしてくれるの。ある程度権限つけられているからできることに限りはあるけど…

難しいよね(/ω＼)

とりあえずfacebookで作ったtokenがあれば別のアプリにfacebookでの自分の情報にアクセスできる権利を渡せるの(✿´ ꒳ ` )

たまに会員登録で色々打たないと登録できないやつあるでしょ？それをもう同じような情報があるサイトの情報使って登録したいんだ〜って時に**facebookでのログイン**とか使っているわけ。

だからアプリにこれらの情報が渡りますが大丈夫ですか？的な文章も出てくるのだけど、ちゃんと確認しているって思ったり…

話を戻して、っていうことでそうやってログインする時とか、一回別のサイトに遷移させないといけないの。

そして自分のところに戻って来てもらわないといけないの。

ただ、その自分のサイトに戻ってくるのをfacebookとかはどうやって認識しないといけないの？ってなるじゃん？

その時に使うのがコールバックURLなの！

することと同じようにcallbackURL=http\://niconico.com/aboutとかつけると、tokenをこのURLに返せばいいんだなとかわかるわけ！で返すってのがtoken=sdsldjksをつけたりするの！

なので流れはこんな感じ

**http\://niconico.com →　http\://yaaaaaa.com?surukoto=tokenkudasai&callbackURL=http\://niconico.com/about**


http\://yaaaaaで処理完了……

**http\://yaaaaaa.com → http\://niconico.com/about?token=4kjdksjdhakj**

ま実際はこんな感じだとあれなのでもっと複雑だけど、ここではコールバックURLのイメージを掴んでもらいたかったからこんな感じで説明させていただきました(/ω＼)

ちなみにログインで使うこと多いかもだけど他のことで使うこともありそう…。

# 最後に
伝わったら嬉しいな(/ω＼)