Google API OAuth2.0 でアクセストークンを取得してみる

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を設定しておくのがポイントです。