PHPを使って、Google API OAuth2.0 でアクセストークンを取得してみる。
サイトを構築する際、認証機能を最初から作るよりも、安全でスピーディーだということで。
↓こちらのサイトを参考にしました。
↓トークンを取得するクラスを作ってみました。
class GoogleAuthModel {
static private $googleClientId = [クライアント ID];
static private $googleClientSecret = [クライアント シークレット];
static private $googleClientAuthCallBack = [コールバックURL];
public function __construct(){
}
static public function getGoogleAuth(){
$querys = array(
'client_id' => self::$googleClientId,
'redirect_uri' => self::$googleClientAuthCallBack,
'scope' => 'https://www.googleapis.com/auth/userinfo.profile',
'response_type' => 'code',
'approval_prompt' => 'force',
'access_type' => 'offline' //※これを指定しないと refresh token が取得できない
);
header('Location: https://accounts.google.com/o/oauth2/auth?'.http_build_query($querys));
}
static public function getGoogleAuthToken($code){
$baseURL = 'https://accounts.google.com/o/oauth2/token';
$params = array(
'code' => $code,
'client_id' => self::$googleClientId,
'client_secret' => self::$googleClientSecret,
'redirect_uri' => self::$googleClientAuthCallBack,
'grant_type' => 'authorization_code'
);
$headers = array(
'Content-Type: application/x-www-form-urlencoded',
);
$options = array('http' => array(
'method' => 'POST',
'content' => http_build_query($params),
'header' => implode("\r\n", $headers),
));
$response = "";
if($json = @file_get_contents($baseURL, false, stream_context_create($options))) {
$response = json_decode($json);
}
if(!$response || isset($response->error)){
return null;
}
return $response->access_token;
}
}
Google API → 認証情報 → 承認済みのリダイレクト URI に、使用するコールバックURLを設定しておくのがポイントです。