PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
生徒
「先生、他のサイトでよく見る『Googleでログイン』とか『Facebookでログイン』って、どうやって作るんですか?」
先生
「それは『OAuth(オーオース)認証』という仕組みを使っています。PHPでも簡単に実装できますよ。」
生徒
「なんだか難しそう…。初心者でもできますか?」
先生
「もちろん大丈夫!一つずつ、やさしく説明していきましょう。」
1. OAuth認証ってなに?初心者でもわかる例えで解説
「OAuth認証(オーオースにんしょう)」は、他のサービス(GoogleやFacebookなど)にログインして、その情報を使って自分のサイトにもログインできる仕組みです。
たとえば、図書館で本を借りるときに、学校の学生証を見せて本人確認するようなイメージです。
PHPでOAuth認証を使うことで、自分のWebアプリにログイン機能を簡単に追加できます。
ここでは、PHPでGoogleログイン・Facebookログインを実装する手順をやさしく解説します。
2. 必要なものを確認しよう(初心者向けの準備)
PHPでOAuth認証を行うには、以下のものが必要です:
- PHPが動くサーバー(ローカルでもOK)
- Composer(PHPのライブラリ管理ツール)
- Google / Facebookの開発者アカウント
もしパソコンをあまり使ったことがない人でも大丈夫。ひとつずつ進めていけば安心です。
3. GoogleログインをPHPで実装する手順
まずは、GoogleでのOAuth認証の仕組みを使ってログイン機能を作ってみましょう。
GoogleのOAuth認証には、Google Cloud Consoleを使います。
ステップ1:Google Cloud Consoleで新しいプロジェクトを作成
- Google Cloud Consoleにアクセス
- 「プロジェクトを作成」をクリック
- プロジェクト名を入力し、作成
ステップ2:OAuth同意画面の設定
- 「APIとサービス」→「OAuth同意画面」を選択
- ユーザータイプは「外部」を選ぶ
- アプリ名やサポートメールを入力
ステップ3:認証情報を作成
- 「認証情報」から「認証情報を作成」→「OAuth 2.0 クライアントID」
- 「アプリケーションの種類」は「ウェブアプリケーション」
- リダイレクトURIを入力(例:
http://localhost/callback.php)
ステップ4:Google Clientライブラリをインストール
ターミナルで以下を実行(Composerが必要)
composer require google/apiclient:^2.0
4. PHPコードでGoogleログインを実装しよう
次に、PHPのコードを書いていきます。ファイルは以下の2つを用意します:
- login.php(ログインボタンの表示)
- callback.php(Googleからの情報を受け取る)
login.php の内容
setClientId('あなたのクライアントID');
$client->setClientSecret('あなたのクライアントシークレット');
$client->setRedirectUri('http://localhost/callback.php');
$client->addScope("email");
$client->addScope("profile");
$authUrl = $client->createAuthUrl();
echo "<a href='$authUrl'>Googleでログイン</a>";
?>
callback.php の内容
<?php
require_once 'vendor/autoload.php';
$client = new Google_Client();
$client->setClientId('あなたのクライアントID');
$client->setClientSecret('あなたのクライアントシークレット');
$client->setRedirectUri('http://localhost/callback.php');
if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
$client->setAccessToken($token);
$oauth = new Google_Service_Oauth2($client);
$userInfo = $oauth->userinfo->get();
echo "こんにちは、" . htmlspecialchars($userInfo->name) . "さん";
}
?>
5. Facebookログインも同じように使える
FacebookでもOAuthを使ってログイン機能を実装できます。基本の考え方はGoogleと同じです。
PHPでは Facebook SDK for PHP を使います。インストールは次の通りです:
composer require facebook/graph-sdk
その後、アプリIDやシークレットを使ってログイン画面を表示します。
GoogleとFacebook両方をサポートすることで、ユーザーがログインしやすくなり、サービスの利用者も増えやすくなります。
6. よくある質問(初心者向けの補足)
Q. GoogleやFacebookログインを使うと安全ですか?
A. はい。ユーザーのパスワードを自分のサイトで管理しないので、セキュリティ面でも安心です。
Q. 自分のアプリに合うログイン方法を選ぶには?
A. ターゲットユーザーに合わせて、GoogleかFacebook、または両方使うと良いです。
Q. 自分でPHPコードを書くのが不安です。
A. 初心者向けのライブラリがあるので、書くコードは最小限で済みます。