İçeriğe geç

Tayfun Erbilen

Web Developer

  • Hakkımda
  • Galeri
  • PROTOTÜRK
  • Prototürk Dersleri

Etiket: php github login

Php ile Github Login İşlemi

Uzun süredir projelerime github ile giriş desteği sunmak istiyordum. Ancak bir türlü basit kod parçacıkları bulamadım bu konuyla ilgili. Github’un önerdiği sınıflar ise, dağ gibi büyük ve sadece login işlemi yapmak isteyenler için fazlasıyla gereksizdi. Bu yüzden en sonunda şurada bulduğum kullanımı basit bir sınıf haline getirdim ve benim gibi projelerine github login desteği sunmak isteyen sizlere yardımcı olabilmek adına paylaşmaya karar verdim.

Sınıf kodları;

<?php

class GithubLogin {

    var $clientId;
    var $secret;
    var $authorizeUrl = 'https://github.com/login/oauth/authorize';
    var $tokenUrl = 'https://github.com/login/oauth/access_token';
    var $apiUrl = 'https://api.github.com/';
    var $scope = 'user';
    var $redirectUri;

    public function __construct($arr){
        $this->clientId = $arr['client_id'];
        $this->secret = $arr['secret'];
        $this->redirectUri = $arr['redirect'];
    }

    public function login(){
        if ( isset($_GET['code']) ){
            $token = $this->request($this->tokenUrl, array(
                'client_id' => $this->clientId,
                'client_secret' => $this->secret,
                'redirect_uri' => $this->redirectUri,
                'code' => $_GET['code']
            ));
            $_SESSION['access_token'] = $token->access_token;
            $this->redirect($this->redirectUri);
        } else {
            $this->redirect($this->authorizeUrl, array(
                'client_id' => $this->clientId,
                'redirect_uri' => $this->redirectUri,
                'scope' => $this->scope
            ));
        }
    }

    public function user(){
        if ( isset($_SESSION['access_token']) ){
            return $this->request($this->apiUrl .'user');
        }
    }

    public function request($url, $post = false, $headers = array()){
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        if($post)
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
        $headers[] = 'Accept: application/json';
        if(isset($_SESSION['access_token']))
            $headers[] = 'Authorization: Bearer ' . $_SESSION['access_token'];
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);
        return json_decode($response);
    }

    public function redirect($url, $params = null){
        header('Location:'.$url.($params ? '?'.http_build_query($params) : null));
    }

    public function logout(){
        session_destroy();
        $this->redirect($this->redirectUri);
    }

}

Kullanımı;

<?php
session_start();
ob_start();

require 'GithubLogin.class.php';
$github = new GithubLogin(array(
	'client_id' => 'github uygulama client id',
	'secret' => 'github uygulama secret key',
	'redirect' => 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'] // yönlendirilecek adres
));

// eğer kullanıcı uygulamaya izin vermiş ve bilgiler çekilmiş ise
if ( $user = $github->user() ){
    print_r($user);
} else {
   $github->login();
}

// çıkış işlemi için
// $github->logout();

Uygulama Oluşturmak

Github.com üzerinden hesabınıza giriş yapın ve ayarlardan uygulamalar bölümüne gelin. Direk aşağıdaki bağlantı;
https://github.com/settings/applications

Burada üstte yeni uygulama oluşturabilir, alt kısımda ise izin verilen uygulamalarınızı görebilirsiniz. Uygulama oluşturduğunuzda size client id ve secret key verecek, bunları sınıfı çağırırken kullanın.

Yazar Tayfun ErbilenYayın tarihi 10 Kasım 201331 Mayıs 2019Kategoriler APIEtiketler github login, php github loginPhp ile Github Login İşlemi için bir yorum yapın

YENİ KURS HAZIRLANIYOR..

Web Geliştirme Eğitim Serisi15 Kasım 2019
Büyük gün geldi. Kursum yayınlandı :)

Bloga e-posta ile abone ol

Bu bloga abone olmak ve e-posta ile bildirimler almak için e-posta adresinizi girin.

Diğer 4.976 aboneye katılın

Takip Edebileceğiniz Platformlar

  • YouTube
  • YouTube
  • Twitter
  • GitHub
  • Instagram
  • Medium
Erbilen.net açıldı5 Mart 2012
2822 gün önce.

Popüler Yazılar

  • PDO Kullanımı
  • Geliştirici Aracını kullanarak sayfanın ekran görüntüsünü almak
  • Instagram PHP API Kullanımı
  • PHP Dizi Fonksiyonları
  • CSS Flex ile İlgili Her şey
  • Composer Kurulumu ve Kullanımı (macOS & Windows)
  • PHPMailer Sınıfı ile Gmail Üzerinden E-Posta Gönderimi
  • Verot.Net Upload Sınıfı Kullanımı

Kategoriler

  • Centos
  • CSS
  • Eğitim Setleri
  • Genel
  • HTML
  • İpucu
  • JavaScript
    • Angularjs
    • jQuery
    • Mootools
  • Kişisel
  • Müzik
  • MySQL
  • PHP
    • WordPress
  • Ubuntu
  • Web
    • API

Blog İstatistikleri

  • 870.015 Görüntülenme

Linkler

  • Şehirler Arası Nakliyat
  • Yemek Tarifleri
Gizlilik ve Çerezler: Bu sitede çerez kullanılmaktadır. Bu web sitesini kullanmaya devam ederek bunların kullanımını kabul edersiniz.
Çerezlerin nasıl kontrol edileceği dahil, daha fazla bilgi edinmek için buraya bakın: Çerez Politikası
  • Hakkımda
  • Galeri
  • PROTOTÜRK
  • Prototürk Dersleri
Tayfun Erbilen WordPress gururla sunar