Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Controller;
- use Cake\Routing\Router;
- use Cake\Utility\Security;
- use Facebook\Exceptions\FacebookSDKException;
- use Facebook\Facebook;
- class LoginFacebookController extends AppController
- {
- public $autoRender = false;
- public $layout = false;
- private $appID = '1941518196096276';
- private $appSecret = 'cf188c4dca7061a86709c17e4d3a4a19';
- private $fbObject;
- public function initialize()
- {
- parent::initialize();
- $this->request->session()->start();
- $this->fbObject = new Facebook(
- [
- 'app_id' => $this->appID,
- 'app_secret' => $this->appSecret,
- 'default_graph_version' => 'v2.5',
- ]
- );
- $this->Auth->allow(['auth', 'callback']);
- }
- public function auth()
- {
- $helper = $this->fbObject->getRedirectLoginHelper();
- $permissions = ['email'];
- $loginUrl = $helper->getLoginUrl(
- Router::url(['action' => 'callback'], true),
- $permissions
- );
- $this->redirect($loginUrl);
- }
- public function callback()
- {
- $helper = $this->fbObject->getRedirectLoginHelper();
- try
- {
- $accessToken = $helper->getAccessToken();
- $response = $this->fbObject->get('/me?fields=id,name,first_name,last_name,email', $accessToken);
- $fb_user = $response->getGraphUser();
- debug($fb_user); exit();
- $this->loadModel('Users');
- $user = $this->Users->findByEmail($fb_user['email'])->first();
- if(empty($user))
- {
- $password = Security::hash(time(), 'sha1', true);
- $data = [
- 'email' => $fb_user['email'],
- 'password' => $password,
- 'fname' => $fb_user['first_name'],
- 'lname' => $fb_user['last_name']
- ];
- $user = $this->Users->newEntity($data);
- $this->Users->save($user);
- $this->Auth->setUser($data);
- unset($data['password']);
- $this->redirect($this->Auth->redirectUrl());
- }else{
- $data = [
- 'email' => $fb_user['email'],
- 'fname' => $fb_user['first_name']
- ];
- $this->Auth->setUser($data);
- $this->request->session()->delete("Auth.User.password");
- $this->redirect($this->Auth->redirectUrl());
- }
- }
- catch (FacebookSDKException $e)
- {
- throw new FacebookSDKException( sprintf("No access Token: %s", $e->getMessage()));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement