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

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA