きまブログ

2022-12から再開しました。

ユーザー認証 Authを学ぶ - Opauth編 (準備)

これは、いわゆる「Twitterでログイン」っていうヤツで、
OAuth2という認証技術を使っています。


今回は、日頃使っているTwitterで試してみます。
ここでは、事あるごとに「Twitter」って書いてますが、ただの例です。。


流れは、こんな感じ


1. Simpleauth もしくは Ormauth を利用可能にしておく。
 ユーザー認証 Authを学ぶ - Simpleauth編 - きまブログ
 ユーザー認証 Authを学ぶ - Ormauth編 - きまブログ
2. PHPのパッケージ管理ツール comporser で、opauthをインストール
3. コントローラーを記述
4. Twitterにアプリ登録をする。

OAuth2 とは?

簡単に説明しておくと、

Twitterユーザーが自分のパスワードをWebアプリに渡さずに、
WebアプリでTwitterのデータを使ってもいい許可を与える認証技術です。

簡単に内部的な「仕組み(やりとり)」も書いておきます。

Webアプリ製作者の準備

・Webアプリ(URL)をTwitterに登録しておく。
→ Webアプリは、Twitterから、アプリ識別用の「APP ID」と「APP SECRET」をもらう。

ユーザーとWebアプリとTwitterのやりとり

(ユーザー)
・ユーザーが、Webアプリにアクセスし「Twitterでログイン」のボタンを押す。


(Webアプリ)
Twitterへリダイレクトする。


(ユーザー)
Twitterへログインする。
・Webアプリが、ユーザーの権限でTwitterの機能を使っていいことを許可する。
TwitterはWebアプリの「コールバックURL」に「認可コード」を送る。
※「コールバックURL」は、Webアプリ登録時に登録してあるものです。


(Webアプリ)
Twitterで「認可コード」を「トークン」に引き換えてもらう。
・「トークン」を使って、許可されたTwitterの機能を使える。
 (タイムラインを取得したり。。)

composer とは?

composer/composer · GitHub
Composerというのは(ボクが何年も前にPHPを使っていた頃の)
PEARと同類のパッケージ管理ツールです。


FuelPHP独自の機能ではありません。
むしろ、FuelPHPのcore、packageはComposerを使ってインストールされてるみたい。


comporserの実体 comporser.phar の *.phar というのは、
PHp ARchive のことで、複数の*.php を固めたものみたい。(詳細不明)

composer.json の記述

composerは、composer.jsonファイルにインストールしたいパッケージを書いておき、実行します。
どんなパッケージがあるかは、以下のサイトで確認できます。
Packagist


まず、oauthパッケージ。
Packagist


composer.json のrequireに “opauth/opauth”:”0.4.*” を追加します。

"opauth/opauth": “0.4.*"

いまだと、0.4.4 がインストールされます。


次に、利用するサービスごとの「ストラテジ」というモノをインストールします。
ここでは、Twitterを使うので。。
opauth/opauth - Packagist

"opauth/twitter": "0.3.*"

いまだと、0.3.1 がインストールされます。

composer.jsonのrequireの部分だけの抜粋です。

"require": {
"php": ">=5.3.3",
"composer/installers": "~1.0",
"fuel/docs": "1.7.2",
"fuel/core": "1.7.2",
"fuel/auth": "1.7.2",
"fuel/email": "1.7.2",
"fuel/oil": "1.7.2",
"fuel/orm": "1.7.2",
"fuel/parser": "1.7.2",
"fuelphp/upload": "2.0.1",
"monolog/monolog": "1.5.*",
"michelf/php-markdown": "1.4.0",
"opauth/opauth": "0.4.*",
"opauth/twitter": "0.3.*"
},

composerの実行 (update)

編集した内容で更新するために、composerをupdateします。

php composer.phar update

確認のため、インストール済みのパッケージ一覧を表示します。

php composer.phar show -i

Controllerの作成 - Opauth編

OAuth2認証を実行していくためのコントローラーを記述していきます。


andreoav/fuel-opauth · GitHub
Opauth Controller example - Auth Package - FuelPHP Documentation
を参考にして、基本的に、FuelPHP本家のサンプルをコピペwします。


両者の共通のメソッドをザックリと比較してみます。

action_login()メソッド

両者でこのメソッドを比較すると。。
・opauth本家:new Auth_Opauth()
FuelPHP本家:Auth_Opauth::forge()
となんとなく、やってることが違います。が、
forge()メソッドは、最終的に、
new static()により、オブジェクトを生成しているので、結果的に同じなんでしょう。。多分
(PHP5.3から導入された新しい、インスタンス生成方法らしい。。)
PHP: クラスの基礎 - Manual

action_callback()メソッド

なんで、こんなにちがうんやろ。。目的は同じはずなのに。。と思ったけど。。


・opauth本家:Twitter認証の状態表示。
FuelPHP本家:opauth本家の内容を、login_orregister()メソッドで簡単にしてある感じ。
だと思います。。
(いまいち不明。。)


ここでは「Twitterでログイン」とありますが、
実際には、ローカルアカウントも作成して、両者を紐付けして管理するのがデフォルトみたいです。
そこで、FuelPHP本家のサンプルでは、
Twitterで認証したあとに、ローカルアカウントの状態に応じた処理も記載されています。

(準備)Twitterにアプリケーション登録をする。

Twitterにアカウント作成。

・左ペインの一番下にある「開発者」をクリック
・下にある[TOOLS]-[Manage Your Apps]をクリック
・アプリの登録をします。
→ Callback URL には、「localhost」と書けません。「127.0.0.1」とします。ローカルの時にはね。


次回で、opauthを使ったTwitterログインの処理を見ていきます。