質問: 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内でやればいいかなと思いました。 もし知っている方がいれば教えていただきたいです。 よろしくお願いいたします。
回答: **「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は変更しづらいですし。