お世話になります。
ログイン画面などによく使われるグーグルアカウントでログインというものを実装したいのですが、調べてみても私の知識では少しハードルが高く困っています。
現状クライアントIDを作成するまででつまずいています。
今回の要件を以下に示します。
1.webアプリケーションの認証として使用する
2.アプリケーション側はphpで作成する
3.DBは使用しない
初心者のためコード込みでご教授いただければ幸いです。
以上、宜しくお願い致します。
追記致します
いろいろなサイトを参考にさせていただいて以下の様なコードを作成しましたがエラーを吐きました。正直エラーの意味がよくわからないのでご教授いただければ幸いです。
-------エラー内容-------------
401. That’s an error.
Error: invalid_client
The OAuth client was not found.
Request Details
That’s all we know.
index.php
1<?php 2// アプリケーション設定 3define('CONSUMER_KEY', 'クライアントID 4'); 5define('CALLBACK_URL', 'http://localhost/google_connect_php/callback.php'); 6 7// URL 8define('AUTH_URL', 'https://accounts.google.com/o/oauth2/auth'); 9 10 11//-------------------------------------- 12// 認証ページにリダイレクト 13//-------------------------------------- 14$params = array( 15 'client_id' => CONSUMER_KEY, 16 'redirect_uri' => CALLBACK_URL, 17 'scope' => 'openid profile email', 18 'response_type' => 'code', 19); 20 21// リダイレクト 22header("Location: " . AUTH_URL . '?' . http_build_query($params));
callback.php
1<?php 2// アプリケーション設定 3define('CONSUMER_KEY', 'クライアントID'); 4define('CONSUMER_SECRET', 'クライアントシークレット'); 5define('CALLBACK_URL', 'http://localhost/google_connect_php/callback.php'); 6 7// URL 8define('TOKEN_URL', 'https://accounts.google.com/o/oauth2/token'); 9define('INFO_URL', 'https://www.googleapis.com/oauth2/v1/userinfo'); 10 11 12//-------------------------------------- 13// アクセストークンの取得 14//-------------------------------------- 15$params = array( 16 'code' => $_GET['code'], 17 'grant_type' => 'authorization_code', 18 'redirect_uri' => CALLBACK_URL, 19 'client_id' => CONSUMER_KEY, 20 'client_secret' => CONSUMER_SECRET, 21); 22 23// POST送信 24$options = array('http' => array( 25 'method' => 'POST', 26 'content' => http_build_query($params) 27)); 28$res = file_get_contents(TOKEN_URL, false, stream_context_create($options)); 29 30// レスポンス取得 31$token = json_decode($res, true); 32if(isset($token['error'])){ 33 echo 'エラー発生'; 34 exit; 35} 36$access_token = $token['access_token']; 37 38 39//-------------------------------------- 40// ユーザー情報を取得してみる 41//-------------------------------------- 42$params = array('access_token' => $access_token); 43$res = file_get_contents(INFO_URL . '?' . http_build_query($params)); 44echo "<pre>" . print_r(json_decode($res, true), true) . "</pre>";
回答2件
あなたの回答
tips
プレビュー