Skip to content

Instantly share code, notes, and snippets.

@bunlongheng
Created March 22, 2016 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bunlongheng/e8bfacac91f0c01deb8b to your computer and use it in GitHub Desktop.
Save bunlongheng/e8bfacac91f0c01deb8b to your computer and use it in GitHub Desktop.
<?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