Oca
13

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

 

Twitter'dan Takip Et! Twitter'dan Takip Et!

Etiketler

Son Yazılar

Son Yorumlar

Bağlantılar

Arşivler