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

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

新規登録して質問してみよう
ただいま回答率
85.48%
OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1712閲覧

TwitterのOAuth認証について

eeengineeeeeeer

総合スコア15

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/05/20 15:39

編集2019/05/20 15:42

PHPでOAuth認証をしてDMの情報を取得しようとしているのですが、わからないことがあったので質問させてください、

本来下記のような実装を考えていました。

  1. ページAからlogin.phpへリンク
  2. リクエストトークンを取得する。(login.php)
  3. リクエストトークンをURLのパラメータに付けて、Twitter認証画面へリダイレクトする。(login.php)
  4. ユーザが認証許可すると「Callback URL」で指定したファイル(callback.php)にリダイレクトされる。その際に、oauth_tokenとoauth_verifierがURLのパラメータに付けられている。
  5. 3で取得したパラメータ等の値を元にアクセストークンを取得する。(callback.php)
  6. アクセストークンを元にDMの情報を取得してsessionに入れる。(callback.php)
  7. ページAに戻って表示をさせる

この場合にcallback.phpを挟まずにTwitter ApplicationのCallback URLでページAを指定してもいいのでしょうか?

その際ページAにoauth_tokenとoauth_verifierがURLのパラメータに付いた状態で戻ってくるのですが、これはセキュリティ的に問題があったりしますでしょうか?
callback.phpを挟んでわざわざSESSIONに保存させなくても、ページA内でやればいいかなと思いました。

もし知っている方がいれば教えていただきたいです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

「Callback URL」自体はcallback.phpでもページAでも構わないと思います。

ただ、callback.phpだと即リダイレクトするからパラメータが見えにくい、というのと、
直接ページAに戻すとコールバックを受ける側の処理が複雑じゃないかな、という部分はあります。

直接ページAを指定しても、callback.phpを経由しても
oauth_tokenとoauth_verifierのパラメータはブラウザのレスポンスとしては出るので
セキュリティ的には大差ないんじゃないかと思います。


コールバックURL内の処理は

  • コールバックURLに渡されるパラメータのoauth_tokenと、login.phpでセッション保存していたリクエストトークンが一致するかをチェック
  • login.phpで保存したリクエストトークンとリクエストトークン・シークレットをセッションから削除
  • リクエストトークンとコールバックURLに渡ってきたパラメータを使って、

アクセストークン / アクセストークン・シークレットをAPIで取得

  • その後の処理で使用するのであれば、アクセストークン / アクセストークン・シークレットをセッション保存

あたりになるかと思います。

かつ、これらの処理は通常コールバックURLでしかやらないような処理なので、
別URLのほうが何かと作りやすいのかなと。
アプリ側の設定も必要だからコールバックURLは変更しづらいですし。

投稿2019/05/28 16:48

Eggpan

総合スコア2727

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

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

0

そのトークン等の秘密情報を盗まれないために中継ページ(というか画面出力伴わないので中継プログラム)で受け取ってページAにリダイレクトをかけているのだと理解します。

投稿2019/05/20 15:49

m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問