manhlinhit
3/9/2016 - 10:25 AM

Laravel - Login Facebook SDK

Laravel - Login Facebook SDK

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Facebook\Facebook;
use Illuminate\Support\Facades\Config;
use Facebook\Helpers\FacebookRedirectLoginHelper;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Authentication\OAuth2Client;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Illuminate\Support\Facades\Session;
use Facebook\FacebookApp;
use Facebook\GraphNodes\GraphNode;
use Facebook\FacebookSDKException;
use App\Tutor;
use Carbon\Carbon;

class FacebookController extends Controller
{
	protected $helper;
	public function __construct(){
		session_start();
		$this->fb = new Facebook(Config::get('facebook'));
		$this->helper = $this->fb->getRedirectLoginHelper();
	}

	// Hàm xử lý chuyển hướng gửi yêu cầu đến Facebook qua Facebook App
	public function RedirectUrl(){


		$permissions = ['email', 'public_profile','user_friends'];
		$callback = url('/facebook/callback');
		$loginUrl = $this->helper->getLoginUrl($callback, $permissions);

		return redirect($loginUrl);
	}

	// Hàm xử lý thông tin trả về hợp lệ
	public function Callback(){

		try {
		  $accessToken = $this->helper->getAccessToken();
		  $response = $this->fb->get('/me?fields=id,name,gender,email',$accessToken);
		} catch(FacebookResponseException $e) {
		  // Khi mà Graph trả về lỗi.
		  echo 'Graph returned an error: ' . $e->getMessage();
		  exit;
		} catch(FacebookSDKException $e) {

		  echo 'Facebook SDK returned an error: ' . $e->getMessage();
		  exit;
		}

		if (isset($accessToken)) {
		  
		  Session::put('facebook_access_token', $accessToken); // Tạo session token facebook.
		  $graphNode = $response->getGraphNode(); // Lấy thông tin user facebook.

		  // Get Info $graphNode->getField('id')
		  $id_fb 	 = $graphNode->getField('id');

		}
	}

}// End Class