• composer.json
"require":{
  "google/apiclient" : "^2.0"
}
  • routes/web.php
Route::get('googleLoginPage',['as'=>'googleLoginPage', 'uses'=> 'GoogleController@googleLoginPage'])
Route::get('callbackGoogle',['as'=>'callbackGoogle', 'uses'=> 'GoogleController@callbackGoogle'])
  • GoogleController
use Google/Client as Google_Client;

# 구글 로그인 페이지
public function googleLoginPage(){
  $this->getGoogleOauthClient("login");
}

# 구글 유저 정보 가져오기
public function callbackGoogle(){
  $client = $this->getGoogleOauthClient("auth");
  $plus = new \Google_Service_Oauth2($client);
  
  $userData = $plus->userinfo->get();
  
  # 유저 정보
  $social_id    = $userData->id; 
  $social_email = $userData->email;
  $social_name  = $userData->name;  
  
}

private function getGoogleOauthClient($type){
  $client_id = $this->client_id;
  $client_secret = $this->client_secret;
  $authCode = $_GET['code'];
  $redirectURI = '도메인/callbacokGoogle';
  
  $client = new Google_Client();
  $client->setScopse(
    array(
      \Google_service_Oauth2::USERINFO_PRIFILE,
      \Google_service_Oauth2::USERINFO_EMAIL
    )
  );
  
  $client->setClientId($client_id);
  $client->setRedirectUri($redirectURI);
  $client->setAccessType('offline');
  $client->setPrompt('select_account consent');
  
  if(!empty($authCode) && $type == 'auth'){
    # 로그인 페이지가 아닌, 인증 받은 후 유저 정보를 가져올때 $client_secret 필요
    $client->setClientSecret($client_secret);
  }
  
  if($client->isAccessTokenExpired()){
    if($client->getRefreshToken()){
      $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
    }else{
       if(!empty($authCode) && $type == 'auth'){
          $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
          $client->setAccessToken($accessToken);
          if(array_ket_exists('error', $accessToken)){
            throw new Exception(join(',',$accessToken));
          }
       }elseif($type =='login'){
         # 구글 로그인 페이지로 리다이렉트
         header("location".$client->createAuthUrl());
       }
    }
  }  
  if($type != "login"){
    return $client;
  }  
}

Screen 이란?

Linux에서 독립적으로 동작하는 가상 터미널을 띄어주는

-> 백그라운드로 동작하는 가상 터미널

 

Screen 사용하는 옵션 명령어

 

[세션이름] : [아이디].name

 

Screen - S [세션이름] : screen 세션 이름 지정 시작

Screen -R [세션이름] :  세션이 있을경우, 이전 세션을 불러와서 실행 없을 경우,

해당이름을 세션 만들어서 실행

Screen -ls (screen -list) : 현재 존재하는 스크린 리스트 출력

Screen -x [세션이름] : 실행 중인 스크린에 다시 진입

-> -R 옵션은 해당 스크린에 여러명이 들어가도 무슨 명령을치는지 모르지만. -X 옵션은 여려명이 들어가도 화면처럼 음직여 상대방이 무슨 명령을 치는지 있다.

 

세션에서 빠져 나올때 세션작업유지 : ctrl + a,d (detach)

 

Screen 끝내기

Screen -ls  : [아이디] 확인

Screen -S [아이디] -X quit

 

 

'Server' 카테고리의 다른 글

WSL php 서버 셋팅하기 (nginx + php-fpm + mysql)  (0) 2022.01.21

오늘도 조용하기만 한 탐정사무소에 편지 한 통이 도착했다. 

플레이 타임 : 80분

추천 : 5/5

공포도 : 3/5 ( 극쫄기준 )

활동성 : 2/5

 

경성 할 겸 버스티드의 탐정 B도 연방으로 예약을 했다.

극쫄2명이서 가서.. 일부 공포 구간이 있다고는 하지만 서로 으쌰 으쌰 하며 할 수 있지! 이랬는데

진짜... 공포 구간에 정말 가기 싫을 정도로 너무 무서웠다..ㅠㅠ

스토리 진행을 위해 어쩔 수 없이 진행하긴 했지만...

이후에 범인 추리하는 부분도 있다 보니 더 몰입하여 진행할 수 있었다.

 

 

+ Recent posts