Php ile Google Auth kullanarak giriş yapıp kullanıcı bilgilerini almak için aşağıdaki adımları izliyoruz.
Öncelikli olarak 4 adet dosya oluşturacağız :
1. Giriş yapmak için yönlendirmeyi sağlayacağımız login.php,
2. Google api kullanımı için gereken bilgileri barındıracağımız google-api-settings.php,
3. Giriş yaptıktan sonra giriş yapan kişinin bilgilerini alacağımız google-redirect.php,
4. Google Api dosyası google-login-api.php.
İlk olarak google-api-settings.php dosyamızı aşağıdaki şekilde düzenleyelim:
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php /* Google App Client Id */ define('CLIENT_ID', 'Google App Client ID'); /* Google App Client Secret */ define('CLIENT_SECRET', 'Client Secret'); /* Giriş Yaptıktan Sonra Yönlendirilecek URL */ define('CLIENT_REDIRECT_URL', 'http://wwphp.com/google-redirect.php'); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php require_once('google-api-settings.php'); $login_url = 'https://accounts.google.com/o/oauth2/v2/auth?scope=' . urlencode('https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email') . '&redirect_uri=' . urlencode(CLIENT_REDIRECT_URL) . '&response_type=code&client_id=' . CLIENT_ID . '&access_type=online'; ?> <html> <head> <!-- Head Bilgileri --> </head> <body> <a href="<?= $login_url ?>">Google ile giris yap</a> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
<?php require_once('google-api-settings.php'); require_once('google-login-api.php'); if(isset($_GET['code'])) { try { $gapi = new GoogleLoginApi(); // Get the access token $data = $gapi->GetAccessToken(CLIENT_ID, CLIENT_REDIRECT_URL, CLIENT_SECRET, $_GET['code']); // Get user information $user_info = $gapi->GetUserProfileInfo($data['access_token']); } catch(Exception $e) { echo $e->getMessage(); exit(); } } ?> <head> <style type="text/css"> #information-container { width: 400px; margin: 50px auto; padding: 20px; border: 1px solid #cccccc; } .information { margin: 0 0 30px 0; } .information label { display: inline-block; vertical-align: middle; width: 150px; font-weight: 700; } .information span { display: inline-block; vertical-align: middle; } .information img { display: inline-block; vertical-align: middle; width: 100px; } </style> </head> <body> <div id="information-container"> <div class="information"> <label>İsim </label><span><?= $user_info['name'] ?></span> </div> <div class="information"> <label>Google ID </label><span><?= $user_info['id'] ?></span> </div> <div class="information"> <label>E-Posta</label><span><?= $user_info['email'] ?></span> </div> <div class="information"> <label>E-Posta Doğrulandı mı ?</label><span><?= $user_info['verified_email'] == true ? 'Evet' : 'Hayır' ?></span> </div> <div class="information"> <label>Resim</label><img src="<?= $user_info['picture'] ?>" /> </div> </div> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php class GoogleLoginApi { public function GetAccessToken($client_id, $redirect_uri, $client_secret, $code) { $url = 'https://www.googleapis.com/oauth2/v4/token'; $curlPost = 'client_id=' . $client_id . '&redirect_uri=' . $redirect_uri . '&client_secret=' . $client_secret . '&code='. $code . '&grant_type=authorization_code'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = json_decode(curl_exec($ch), true); $http_code = curl_getinfo($ch,CURLINFO_HTTP_CODE); if($http_code != 200) throw new Exception('Error : Failed to receieve access token'); return $data; } public function GetUserProfileInfo($access_token) { $url = 'https://www.googleapis.com/oauth2/v2/userinfo?fields=name,email,gender,id,picture,verified_email'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer '. $access_token)); $data = json_decode(curl_exec($ch), true); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($http_code != 200) throw new Exception('Error : Failed to get user information'); return $data; } } ?> |
Merhabalar, Emeğinize sağlık
SignOut nasıl yapılıyor peki tamam yukarı daki kod çalışıyor ama çıkış nereden yapılıyor
Merhaba Öncelikle Teşekkür Ederim,
Kullanıcıyı https:// accounts.google.com /logout adresine bir link aracılığı ile yönlendirerek çıkış yaptırabilirsiniz.
veya cikis.php gibi bir sayfa hazırlayıp içerisinde iframe ile ilgili linki çalıştırabilirsiniz.
Redirect_uri için geçersiz parametre değeri: Eksik yetki
localhost: 8080 / googlelogin / google-redirect.php
halbuki oAth2.0 İZin bilgilerinde
Yetkilendirilmiş yönlendirme URI’ları
http://localhost:8080/googlelogin/google-redirect.php
ekli
ve çalışmıyor… Sebebi ne olabilir?
Merhaba,
Google geri dönüş url için genelde https (ssl) destekli bir uzantı talep ediyor.
Localhost’unuzda kullandığınız yazılım üzerinden örn:xampp self-signed ssl sertifikası kurup gerekli ayarlamaları yaparsanız
https:// localhost:8080 / googlelogin /google-redirect.php şeklinde muhtemelen çalışacaktır.
Benim google auth üzerinde izin verdiğim geri dönüş url adresleri şu şekilde :
https:// localhost/ googlelogin/ google-redirect.php
http:// localhost/ googlelogin/ google-redirect.php
http:// localhost
Denedim çalıştı, Kodları kendinize göre düzenleyin arkadaşlar API Bilgilerini talep edip yerleştirin ilgili alanlara kodlar hala çalışıyor.