Sosyal medya hesabı ile giriş yaptırmak – Google
Artık devir, site kullanıcıları için her şeyi basitleştirmek ve kolaylaştırmak üzerine kurulu. Şu saatten sonra sosyal medyayı kullanmayan kişi sayısı yüzde olarak çok düşük. Bu noktada devreye sosyal medya apileri girmekte. Sitemize üye olacak kullanıcıların 1-2 dakika sürece form doldurmaları ile vakit kaybettirmemek adına bu yazımda google’ın api entegrasyonunu sizlere anlatıyor olacağım.
İlk olarak Google’ın bize sağlamış olduğu apiyi şuradan indirebilirsiniz.
Gerekli api dosyasını indirdikten sonra projemize ekliyoruz.
Şimdi sırada google’dan gerekli izinleri almamız gerekiyor. https://console.developers.google.com/apis/credentials sitesine giderek izin oluştur “create credential” butonuna basıyoruz. “Outh Clitn Id” seçdikten sonra gelen ekrandan “Web Application” ‘ı seçiyoruz. Bir isim verdikten sonra “Authorized redirect URIs” kısmına “http://localhost” yazıp kaydediyoruz. Sonra tabloda gelen json indir butonuna basarak gerekli json dosyasını indiriyoruz. Gerçek sisteme geçerken sitenin domainini eklemeyi unutmamız gerekmekte. Malum izin olmadığı için çalışmayacaktır. Yada siz localhost ile birlikte kendi domaininzi de ekleyebilirsiniz.
Json dosyasını da projemize ekliyoruz.
Daha sonra google giriş butonunu ekleyeceğimiz sayfaya aşağıdaki kodları yazıyoruz. Ben google.php isimli dosya oluşturdum.
$oauth_credentials değişkenine json dosyasının yolunu veriyoruz.
$redirect_uri değişkenine ise Google’dan bzim siteye gerekli parametrelerin gelmesini sağlayacağımız linki veriyoruz.
setScopes parametresine kullanıcıdan istediğimiz izin listelerini söylüyoruz. Biz giriş, email ve profil bilgilerini talep edeceğiz.
require_once('Social/Google/vendor/autoload.php'); require_once('Social/Google/Client.php'); require_once('Social/Google/AccessToken/Verify.php'); $oauth_credentials = 'Social/Google/oauth-credentials.json'; $redirect_uri = 'http::/localhost/google-callback.php'; /** * Google Client Configuration **/ $Google = new Google_Client(); $Google->setAuthConfig($oauth_credentials); $Google->setRedirectUri($redirect_uri); // $Google->setScopes('email'); $Google->setScopes(array( "https://www.googleapis.com/auth/plus.login", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile" )); echo "<a href=\"". $Google->createAuthUrl() ."\">Google</a>";
Kullanıcımız Google linkine tıkladığında izin penceresi açılacak ve izin ver butonuna bastığında google $redirect_uri değişkenine verdiğimiz linke geri dönecek.
google-callback.php sayfasına geri geldiğinde localdeyken aşağıdaki hatayı alacağız.
<b>Fatal error</b>: Uncaught exception 'GuzzleHttp\Ring\Exception\RingException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate' in
Bu hatanın sebebi Google’ın bizden siteyi doğrulayan bir sertifikasının olmasını istemesidir. Bunun için “cacert.pem” sertifikasını kullanmamız gerekmektedir.
Şu adresden gerekli dosyayı indirebilirsiniz. Dosyayı ben “C:\xampp\extras\cert\cacert.pem” bu klasöre ekledim. Bundan sonra yapacağımız şey ise php.ini dosyasını açmak ve en alt satıra aşağıdaki kod çarçasını ekleyip kaydetmek.
curl.cainfo = "C:\xampp\extras\cert\cacert.pem"
Tabi bu işlemi yaptıktan sonra aktif edebilmek için apache sunucumuzu yeniden başlatmamız gerekecek.
Tekrardan Google linkine tıklayarak kullanıcıdan gerekli izinleri aldıktan sonra bu sefer başarılı şekilde sayfamıza redirect olmakta. google-callback.php sayfamız da şu şekildedir.
require_once('Social/Google/vendor/autoload.php'); require_once('Social/Google/Client.php'); require_once('Social/Google/AccessToken/Verify.php'); $oauth_credentials = 'Social/Google/oauth-credentials.json'; $redirect_uri = 'http::/localhost/google-callback.php'; $Google = new Google_Client(); $Google->setAuthConfig($oauth_credentials); $Google->setRedirectUri($redirect_uri); // $this->Google->setScopes('email'); $Google->setScopes(array( "https://www.googleapis.com/auth/plus.login", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile" )); if (isset($_GET['code'])) { $token = $Google->fetchAccessTokenWithAuthCode($_GET['code']); $Google->setAccessToken($token); // store in the session also $_SESSION['google_access_token'] = $token; $Google->setAccessToken($_SESSION['google_access_token']); if ($Google->getAccessToken()) { $token_data = $this->Model->Google->verifyIdToken(); print_r($token_data); } }
bize dönecek olan code parametresinin var olup olmadığını kontrol ediyoruz. Sonra ilgili parametrenin doğruluğunu google’a yaptırıyoruz.
Eğer giriş başarılı ise $token_data değişkenimize gerekli bilgiler array şeklinde dönmektedir. İster bu bilgileri veri tabanınıza kayıt edin isterseniz sadece
$_SESSION['google_access_token'] bilgileri ile işlem yapın. Kolay gelsin :)
Yorum Yapın
Etiketler
Son Yazılar
- Uzak sunucuda bulunan android cihaz ile otomasyon
- Mac’ de çoklu Java versiyon yönetimi
- İş yarar docker komutları
- Eski branchlerin git’ den silinmesi
- Kubernetes Süresi Dolmuş Sertifikaları Yenilemek
Son Yorumlar
- Hosting koşuşturması için
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için
- Visual Studio Toolbox’a component(bileşen) eklenmesi için
- “File is too large for destination file system” hatasını gidermek için
- Php’de UTF-8 Türkçe karakter sorunu ve çözümü için
Bağlantılar
Arşivler
- Kasım 2021
- Eylül 2021
- Ağustos 2021
- Temmuz 2021
- Aralık 2020
- Kasım 2020
- Ekim 2020
- Eylül 2020
- Kasım 2017
- Mayıs 2017
- Mart 2017
- Şubat 2017
- Ocak 2017
- Nisan 2015
- Aralık 2014
- Mayıs 2014
- Eylül 2013
- Haziran 2013
- Şubat 2013
- Kasım 2012
- Ekim 2012
- Eylül 2012
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009