İçeriğe geç

Tayfun Erbilen

Web Developer

  • Hakkımda
  • Kullandığım Ekipmanlar
  • Galeri
  • 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
PHP

kursumu indirimli almak için kupon kodu

17MAYISSON
17 Mayıs 2020'ye kadar geçerli.

webso.cool | freelance yazılım ekibi

webso.cool | freelance yazılım ekibi

Kategoriler

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

Linkler

  • Hosting
  • Tavsiye Eder – Film Tavsiyeleri
  • Komatsu Yedek Parça
  • Qr Menü
  • Hakkımda
  • Kullandığım Ekipmanlar
  • Galeri
  • Prototürk Dersleri
Tayfun Erbilen WordPress gururla sunar