2012年8月19日日曜日

GitHubAPIでOAuth認証を使ったアクセストークンを取得する方法

GitHubの情報は基本的には公開情報なのでGETするだけならアクセストークンは必要ないです

GitHubのアクセストークンを取得して可能になることは以下
  • 独自のOAuth認証を作成することができる(よく最近見かける「GitHubアカウントを使う」といったやつです)
  • 更新、削除系の処理を行うことができる
といったところでしょうか

公式のサイトを基本的に参考にはしましたが
http://developer.github.com/v3/oauth/
わりとわかりにくかったので、まとめて見ました
ちょっと下法かもしれませんが参考になればと思います

■取得方法
1.クライアントIDとクライアントシークレットを取得する
  • GitHubのトップページから右上の「Account Settings」を押下
  • 左メニューに「Applications」があるので押下
  • 「Register new application」が右メニューにあるので押下してアプリケーションを登録
「Application Name」「Main URL」「Callback URL」を入力
なんでURLを入れるのかと言うと冒頭でも話をしたとおりにOAuth認証を使用するからです
OAuth認証を実行するURLがMain URLでそこで認証が成功したらリダイレクトするページがCallback URLになります
WebのUIを作るなら考える必要がありますが、特にUIを使用しないのならば適当に入力しましょう
同値でも問題ないです
ただし存在しないURLは入力しないでください
アクセストークンに必要なcodeという情報が取得できなくなります
  • 入力が完了したら「Register application」を投下して登録
  • 再度「Applications」の画面を見ると登録したアプリがあるので押下すると「Client ID」と「Client Secret」があることを確認する
後述しますがここで取得したものがアクセストークンではありません
アクセストークンはこれを使って再度取得します

2.OAuth認証を発生させcode情報を取得する
  • codeを取得するためにOAuth認証を発生させる
  • ブラウザを開いてURLに以下を入力
https://github.com/login/oauth/authorize?client_id=先ほど取得したクライアントID
  • OAuth認証が発生するので自身が持っているアカウントでログイン
  • 先ほど登録した「Callback URL」にリダイレクトされる
ここでURLを見るとリダイレクトされたURLの末尾にcodeというパラメータが付与されているのでメモ
code以下は全てメモしておいてください、stateというパラメータまでメモしてください

3.リクエストを作成してアクセストークンを取得する
  • これまで取得できた情報で以下のリクエストを生成する
https://github.com/login/oauth/access_token?client_id=先ほど取得したクライアントID&client_secret=先ほど取得したクライアントシークレット&code=先ほど取得したcode&state
  • このURLをブラウザでアクセスすると「access_token」というファイルがダウンロードされる
  • ファイルの中身を見るとアクセストークンが記載されている
ファイルの中身がerror=bad_verification_codeとなっている場合はリクエストの生成が正しく行われておりません
取得した情報や最後のstateがしっかり付与されているかどうかを確認しましょう

以上でGitHubAPIのアクセストークンを取得する方法は終了です
ブラウザでアクセストークンを取得するところがかなり下法な気がしますが・・・

0 件のコメント:

コメントを投稿