Created
March 22, 2016 15:38
-
-
Save bunlongheng/e8bfacac91f0c01deb8b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Http\Controllers; | |
use Validator, Input, Auth, Redirect, Request, JavaScript, DateTime, Session, DB; | |
use App\VSE, App\Helper, App, App\Token, App\CURLexec, App\User; | |
class FacebookController extends Controller { | |
public function getToken(){ | |
$id = Auth::user()->account_id; | |
$fb_user = User::where('account_id','=',$id)->where('fb_access_token','!=','') | |
->first(); | |
$fb_user = json_decode($fb_user, TRUE); | |
$token = $fb_user['fb_access_token']; | |
return $token; | |
} | |
public function getPageId(){ | |
$id = Auth::user()->account_id; | |
$fb_user = User::where('account_id','=',$id)->where('fb_page_id','!=','') | |
->first(); | |
$fb_user = json_decode($fb_user, TRUE); | |
$id = $fb_user['fb_page_id']; | |
return $id; | |
} | |
public function getPageToken(){ | |
$token = $this->getToken(); | |
$id = $this->getPageId(); | |
$url = 'https://graph.facebook.com/'.$id.'?fields=access_token&access_token='.$token; | |
$token = CURLexec::get($url); | |
return $token['access_token']; | |
} | |
public function getUserId(){ | |
$id = Auth::user()->account_id; | |
$fb_user = User::where('account_id','=',$id) | |
->where('fb_profile_id','!=','') | |
->first(); | |
if($fb_user){ | |
$fb_user = json_decode($fb_user, TRUE); | |
$id = $fb_user['fb_profile_id']; | |
return $id; | |
}else{ | |
return 'null'; | |
} | |
} | |
public function getUserAccount(){ | |
$token = $this->getToken(); | |
$user_id = $this->getUserId(); | |
$url = 'https://graph.facebook.com/'.$user_id.'/accounts?access_token='.$token; | |
$accounts = CURLexec::get($url); | |
$account = $accounts['data']; | |
return $account; | |
} | |
public function getPageIdBaseFbUsername($fb_username){ | |
$token = $this->getToken(); | |
$url = 'https://graph.facebook.com/'.$fb_username.'?access_token='.$token; | |
$result = CURLexec::get($url); | |
$page_id = $result['id']; | |
return $page_id; | |
} | |
public function settings(){ | |
$id = Auth::user()->account_id; | |
$fb_user = User::where('account_id','=',$id)->where('fb_access_token','!=','') | |
->first(); | |
$fb_user = json_decode($fb_user, TRUE); | |
$cpe_mac = Request::segment(1); | |
// dd($fb_user); | |
// dd($fb_user); | |
$user_token = $fb_user['fb_access_token']; | |
$user_email = $fb_user['fb_email']; | |
$user_id = $fb_user['fb_profile_id']; | |
$page_id = $fb_user['fb_page_id']; | |
if($page_id != ''){ | |
$page_url = "http://www.facebook.com/".$page_id; | |
}else{ | |
$page_url = 'N/A'; | |
} | |
if($user_id != ''){ | |
$user_url = "http://www.facebook.com/".$user_id; | |
}else{ | |
$user_url = 'N/A'; | |
} | |
return view('settings.index', get_defined_vars()); | |
} | |
public function userDeactivate(){ | |
// dd('Ajax Successfully Post !'); | |
$user = User::where('account_id','=',Auth::user()->account_id)->first(); | |
$user->fb_access_token = ''; | |
$user->fb_email = ''; | |
$user->fb_profile_id = ''; | |
$user->fb_page_id = ''; | |
$user->save(); | |
} | |
public function activatePage(){ | |
$page_url = Input::get('page_url'); | |
$fb_username = end((explode('/', rtrim($page_url, '/')))); | |
// dd($fb_username); | |
$page_id = $this->getPageIdBaseFbUsername($fb_username); | |
$user = User::where('account_id','=',Auth::user()->account_id)->first(); | |
$user->fb_page_id = $page_id; | |
$user->save(); | |
// $cpe_mac = Request::segment(1); | |
// return Redirect::to('/'.$cpe_mac.'/settings'); | |
} | |
public function pageDeactivate(){ | |
// dd('Ajax Successfully Post !'); | |
$user = User::where('account_id','=',Auth::user()->account_id)->first(); | |
$user->fb_page_id = ''; | |
$user->save(); | |
} | |
/*============================ | |
= Feed = | |
==============================*/ | |
public function pageFeed(){ | |
$token = $this->getToken(); | |
$id = $this->getPageId(); | |
$url = 'https://graph.facebook.com/'.$id.'/feed?access_token='.$token; | |
return CURLexec::get($url); | |
} | |
public function userFeed(){ | |
$token = $this->getToken(); | |
$id = $this->getUserId(); | |
$url = 'https://graph.facebook.com/'.$id.'/feed?access_token='.$token; | |
return CURLexec::get($url); | |
} | |
public function feedTruncate(){ | |
$token = $this->getToken(); | |
$id = $this->getUserId(); | |
$url = 'https://graph.facebook.com/'.$id.'/feed?access_token='.$token; | |
// dd($url); | |
$feeds = CURLexec::get($url); | |
$feeds = json_decode (json_encode($feeds), FALSE); | |
$feeds = $feeds->data; | |
// dd($feeds); | |
foreach ($feeds as $feed) { | |
$url = 'https://graph.facebook.com/'.$feed->id.'?access_token='.$token; | |
CURLexec::delete($url); | |
} | |
return Redirect::to('/facebook/page/feed'); | |
} | |
/*============================ | |
= Like = | |
============================*/ | |
public function like(){ | |
$token = $this->getToken(); | |
$id = $this->getPageId(); //1081004428599512 | |
$url = 'https://graph.facebook.com/v2.5/'.$id.'?fields=likes&access_token='.$token; | |
return CURLexec::get($url); | |
} | |
/*=================================== | |
= Cover Photo = | |
===================================*/ | |
public function cover(){ | |
$token = $this->getToken(); | |
$id = $this->getPageId(); | |
$url = 'https://graph.facebook.com/'.$id.'?fields=picture,cover&access_token='.$token; | |
return CURLexec::get($url); | |
} | |
/*============================ | |
= Link = | |
============================*/ | |
public function link(){ | |
$fb = App::make('SammyK\LaravelFacebookSdk\LaravelFacebookSdk'); | |
// Obtain an access token. | |
try { | |
$token = $fb->getAccessTokenFromRedirect(); | |
} catch (Facebook\Exceptions\FacebookSDKException $e) { | |
dd($e->getMessage()); | |
} | |
// Access token will be null if the user denied the request | |
// or if someone just hit this URL outside of the OAuth flow. | |
if (! $token) { | |
// Get the redirect helper | |
$helper = $fb->getRedirectLoginHelper(); | |
if (! $helper->getError()) { | |
abort(403, 'Unauthorized action.'); | |
} | |
// User denied the request | |
dd( | |
$helper->getError(), | |
$helper->getErrorCode(), | |
$helper->getErrorReason(), | |
$helper->getErrorDescription() | |
); | |
} | |
if (! $token->isLongLived()) { | |
// OAuth 2.0 client handler | |
$oauth_client = $fb->getOAuth2Client(); | |
try { | |
$token = $oauth_client->getLongLivedAccessToken($token); | |
} catch (Facebook\Exceptions\FacebookSDKException $e) { | |
dd($e->getMessage()); | |
} | |
} | |
$fb->setDefaultAccessToken($token); | |
Session::put('fb_user_access_token', (string) $token); | |
$o_auth_token = (string) $token; | |
// Get basic info on the user from Facebook. | |
try { | |
$response = $fb->get('/me?fields=id,name,email'); | |
} catch (Facebook\Exceptions\FacebookSDKException $e) { | |
dd($e->getMessage()); | |
} | |
// Convert the response to a `Facebook/GraphNodes/GraphUser` collection | |
$facebook_user = $response->getGraphUser(); | |
$vcpes = VSE::vcpes_all(); | |
$vcpes = json_decode (json_encode ( $vcpes), FALSE); | |
if(isset($vcpes)){ | |
foreach( $vcpes as $vcpe ){ | |
if( $vcpe->account_id == Auth::user()->account_id ){ | |
$cpe_mac = $vcpe->cpe_mac; | |
} | |
} | |
} | |
$user = User::where('account_id','=',Auth::user()->account_id)->first(); | |
$user->fb_access_token = $o_auth_token; | |
$user->fb_email = $facebook_user['email']; | |
$user->fb_profile_id = $facebook_user['id']; | |
$user->save(); | |
return redirect('/'.$cpe_mac.'/dashboard')->with('success', 'You have successfully link your account with Facebook'); | |
} | |
/*============================ | |
= Post = | |
============================*/ | |
public function post(){ | |
$token = $this->getPageToken(); | |
$id = $this->getPageId(); | |
$url = 'https://graph.facebook.com/'.$id.'/feed?access_token='.$token; | |
$status = Input::get('status'); | |
$data = []; | |
$data['message'] = $status; | |
$data = json_encode($data); | |
CURLexec::post($url,$data); | |
} | |
public function postUrl(){ | |
$page_url = Input::get('page_url'); | |
$fb_username = end((explode('/', rtrim($page_url, '/')))); | |
// dd($fb_username); | |
$page_id = $this->getPageIdBaseFbUsername($fb_username); | |
$user = User::where('account_id','=',Auth::user()->account_id)->first(); | |
$user->fb_page_id = $page_id; | |
$user->save(); | |
// $pages = $this->getUserAccount(); | |
// foreach ($pages as $page) { | |
// if($page['id'] == $page_id){ | |
// } | |
// } | |
if($user->save()){ | |
dd('User Save!'); | |
}else{ | |
dd('Please link the page that you have access to !'); | |
} | |
} | |
/*================================ | |
= Activate = | |
================================*/ | |
public function activate(){ | |
$fb = App::make('SammyK\LaravelFacebookSdk\LaravelFacebookSdk'); | |
$permissions = 'manage_pages,publish_pages, publish_actions, user_posts, user_photos'; | |
$login_url = $fb->getLoginUrl(['email','scope'=>$permissions]); | |
//Save to db | |
$fb_email = Input::get('email'); | |
$auth_email = Auth::user()->email_address; | |
$id = Auth::user()->account_id; | |
$user = User::where('account_id','=',$id)->first(); | |
$user->fb_email = $fb_email; | |
$user->save(); | |
return redirect($login_url); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment