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'
    );

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