반응형
설치는 컴포저
composer require google/apiclient:^2.0
view와 통신용 컨트롤러 구분.
특이하게 use COMPOSERPATH;
선언했음에도 모듈호출시 '\'를 써야한다. 왜지?
// 프론트 해당 페이지 컨트롤러
// 구글
//Make object of Google API Client for call Google API
$google_client = new \Google_Client();
//Set the OAuth 2.0 Client ID
$google_client->setClientId(GOOGLE_KEY);
//Set the OAuth 2.0 Client Secret key
$google_client->setClientSecret(GOOGLE_SECRET_KEY);
//Set the OAuth 2.0 Redirect URI
$google_client->setRedirectUri(BASEURL . '/api/GoogleAuth'); // 리다이렉트 주소. 해당 원하는 함수로 던져주면 된다.
//
$google_client->addScope('email');
$google_client->addScope('profile');
$data['google_client'] = $google_client;
echo view('페이지', data);
// View.php
// createAuthUrl 이 주소 만들어주는 부분이다.
<a href="<?=$google_client->createAuthUrl();?>" class="socials__social">
<img src="/img/icons/google.png" alt="kakao" style="width:25px;" />
</a>
// 통신용 컨트롤러.php
if(isset($_GET['code'])) {
$client = new \Google_Client();
$client->setClientId(GOOGLE_KEY);
//Set the OAuth 2.0 Client Secret key
$client->setClientSecret(GOOGLE_SECRET_KEY);
//Set the OAuth 2.0 Redirect URI
$client->setRedirectUri(BASEURL . '/api/GoogleAuth');
$client->addScope('email');
$client->addScope('profile');
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
if(!isset($token['error']))
{
$client->setAccessToken($token['access_token']);
$_SESSION['google_access_token'] = $token['access_token'];
}
$google_service = new \Google_Service_Oauth2($client);
$data = $google_service->userinfo->get();
// 데이터에 이메일, 프로필이 들어와 있고, 토큰에는 엑세스토큰과 만료시간이 적혀있다.
// fetchAccessTokenWithAuthCode에서 해당 view컨트롤러와 동일한 내용이 아니면 호출이 안되는 것 같았다.
// 작성 끝.
}
프론트에서 작동하다가 해커의 위협을 피해서 컨트롤러로 이전했다.
이전에는 JS를 통해서 작동하게 만들었지만, 이제 아예 노출되지 않도록 구성 완료.
728x90
'취업 > 소셜로그인' 카테고리의 다른 글
[ci4] 페이스북 sdk php 버전용. (0) | 2022.06.21 |
---|---|
[ci4] kakako 로그인 기능 구현. (0) | 2022.06.10 |
[ci4]소셜로그인 new 코드 구글 로그인(JS - 프론트 코드) (8) | 2022.06.01 |
[ci4] 소셜로그인 페이스북 로그인/로그아웃 (0) | 2022.06.01 |
[ci4] 소셜로그인 카카오 로그인/로그아웃 (0) | 2022.06.01 |