Views 3110 Votes 0 Comment 0
Atachment
Attachment '11'
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

firebase00.jpg



Firebase는 2012년에 앱 간 실시간 데이터의 동기화를위한 아키텍처로 설립되었다가 2014 년에 Google에 인수되었다. 원래는 개발자들에게 온라인 채팅 통합 API를 제공하는 Envolve라는 신생업체의 일부였다. 당시 채팅 API를 사용하는 개발자들은 채팅 메시지 외에도 게임상태와 같은 응용프로그램의 데이터를 전달하는 것에 활용하고 있었다.

이에 Envolve의 개발자들은 이 시스템의 더 큰 잠재력을 깨닫고 실시간 기능을 갖춘 Backend-as-a-Service를 제공하는 Firebase라는 별도의 회사로 분리했다.


현재 Firebase는 인증, 클라우드/실시간 데이터베이스, 스토리지, 호스팅과 그 외 이들을 연동할 수 있는 트리거 펑션기능을 지원하고 있다. 이러한 기능들의 범위에서 활용한다면 별도의 서버 프로그래밍 없이도 모바일/클라이언트 서비스를 운영할 수 있다. 하지만, 별도의 관리자 콘솔을 구축하거나 컨텐츠 운영을 위한 CMS를 구축하려고 한다면 해당 서버와 Firebase와 연동이 필요하다.


이 글에서는 Laravel 5.5에서 Firebase Realtime Database를 (Admin SDK를 사용하여) 연결하는 방법을 설명한다.




# 개발 환경 및 요구사항

 - Lavavel 5.5

 - PHP 7.1

 - Google Firebase Real-time Database

 - Web Server (Apache, NGINX 또는 통합 PHP 구동 환경)




1. Google Firebase 설정


구글 계정에 로그인 하고 Google Firebase Console 로 이동한다.

firebase01.png



프로젝트를 이름을 입력하고 프로젝트를 추가한다.

firebase02.png



프로젝트가 생성되면 왼쪽에 관련 메뉴와 대시보드 화면이 나타난다.

왼쪽에서 Database 메뉴를 선택해서 Realtime-Database를 생성한다.

firebase03.png


firebase04.png



데이터베이스 생성 후 "RULES" 탭으로 이동하여 Read/Write 규칙을 "true"값으로 변경하고 "PUBLISH" 버튼을 누른다.

firebase05.png





2. API Key 생성


왼쪽 메뉴의 "Project Overview" 옆에 설정 버튼을 눌러서 "Project settings" 메뉴로 이동한다.

firebase06.png



Settings 화면에서 "SERVICE ACCOUNTS" 탭으로 이동한다.

firebase07.png



하단의 "GENERATE NEW PRIVATE KEY" 버튼을 눌러 API Key를 생성하고 다운로드 한다.

(생성 후 자동으로 다운로드 됨)





3. Laravel 프로젝트 생성


Composer 명령어를 이용해 Laravel 프로젝트를 생성한다.

composer create-project --prefer-dist laravel/laravel firebase


Firebase 연동에 필요한 라이브러리(kreait)를 설치한다. (Dependencies for Firebase)

composer require kreait/firebase-php ^4.0


Laravel에 Controller를 추가하고 관련 함수를 작성한다.

php artisan make:controller FirebaseController --resource


# app/Http/Controllers/FirebaseController.php

//FirebaseController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Kreait\Firebase;
use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;

class FirebaseController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $serviceAccount = ServiceAccount::fromJsonFile(__DIR__.'/laravel-b0f18-firebase-adminsdk-c5z3y-4f1dbdb7bf.json');
        $firebase = (new Factory)
        ->withServiceAccount($serviceAccount)
        ->withDatabaseUri('https://laravel-b0f18.firebaseio.com/')
        ->create();

        $database = $firebase->getDatabase();
        $memoList = $database->getReference('list/memo')->getvalue();

        $newMemo = $database->getReference('list/memo')->push([
            'id' => $maxId,
            'title' => 'Hello world! (id:'.$maxId.')',
            'content' => 'This is the website hooni.net'
        ]);
        echo '<pre>';
        echo 'Posted : ';
        print_r($newMemo->getvalue());
        
        echo "<br />";
        echo 'All : ';
        print_r($database->getReference('list/memo')->getvalue());
        echo '</pre>';
    }

    . . .
}
?>


Route에 firebase 정보를 추가한다.

# routes/web.php

Route::get('firebase', 'FirebaseController@index');


로컬 서버를 실행하여 웹페이지를 확인한다.

로컬환경에 웹서버가 없는 경우 다음 명령어를 실행하여 테스트용 웹서버를 실행할 수 있다.

php artisan serve


firebase09.png


# Google Firebase Console에서 확인한 모습

firebase08.png



[참고] https://hackernoon.com/introduction-to-firebase-218a23186cd7

[참고] https://github.com/kreait/firebase-php
[참고] https://github.com/jeromegamez/firebase-php-examples

[참고] https://media.readthedocs.org/pdf/firebase-php/stable/firebase-php.pdf



?

List of Articles
No. Category Subject Author Date Views
1109 Develop [ios] iOS 4.0 beta 에서 3.1.3으로 다운그레이드 하는 법 file hooni 2013.04.23 37497
1108 Etc [svn] 콘솔에서 svn 사용시 레티나용 이미지 add 안될 때.. hooni 2013.09.25 37490
1107 System/OS 맥에서 파일공유 (윈도우,맥) file hooni 2013.04.25 37301
1106 System/OS [mac] Mac에서 Mac으로 원격제어하기 (맥에서 맥으로) file hooni 2013.10.08 36989
1105 Develop [js] jQuery 치트 시트 hooni 2013.12.18 36253
1104 Develop [php] 몽이가 준 ajax 채팅 소스 ㅋㅋ file hooni 2013.04.23 36176
1103 Develop [ios] iOS 6.0 이상 회전 하기 (이전 버전과 비교 변경 부분) file hooni 2014.01.27 34185
1102 System/OS [sql] 조회구문(select)에서 중복 데이터를 한 번만 출력 (distinct) 1 hooni 2013.04.23 33920
1101 Develop [lego] 세그웨이 이것만 볼것.. ㅎㅎ file hooni 2013.04.23 33536
1100 Develop [c] C로 구현한 CGI - 방명록 file hooni 2003.04.23 33433
1099 Develop 베지어 곡선(Bézier curve) 알고리즘(spline 곡선) 3 file hooni 2013.04.23 33257
1098 Develop [js] jQuery 코드 작성시 편리한 HTML 템플릿 hooni 2013.12.17 33071
1097 Develop [c++] 웹폼(webform)전송과 http 파일 업로드 샘플 file hooni 2013.04.23 33068
1096 Develop [ios] 디렉토리 하하하.. hooni 2013.04.23 32630
1095 Develop [js] 키보드 아스키코드(ASCII) 코드보기 hooni 2003.04.23 32476
1094 System/OS [linux] Oracle8.1.6, Mysql+PHP+Zend Optimizer+APACHE+Tomcat(jsp,servlet)+IMAP+gd hooni 2003.04.23 32452
Board Pagination Prev 1 3 4 5 6 7 ... 74 Next
/ 74