public function get_form() { $client_id = \Config::get('ethanol.google.client_id'); $client_secret = \Config::get('ethanol.google.client_secret'); $redirect_uri = urlencode(parent::get_login_controller_path('google')); $scope = 'https://www.googleapis.com/auth/userinfo.email'; $login_url = "https://accounts.google.com/o/oauth2/auth\n?scope={$scope}\n&redirect_uri={$redirect_uri}\n&response_type=code\n&client_id={$client_id}"; return \View::forge('ethanol/driver/google_login')->set('loginUrl', $login_url)->render(); }
/** * Logs a user in and makes sure there's an assocated Ethanol user as well */ public function validate_user($userdata) { //User wants to log in so make sure there's an Ethanol user as well if ($userdata['state'] != Session::instance()->get_instance()->get('ethanol.driver.facebook.csrf')) { Logger::instance()->log_log_in_attempt(Model_Log_In_Attempt::$ATTEMPT_BAD_CRIDENTIALS, null); throw new LogInFailed(\Lang::get('ethanol.errors.loginInvalid')); } //Remove the csrf token now that it has been validated Session::instance()->get_instance()->set('ethanol.driver.facebook.csrf', ''); $app_id = \Config::get('ethanol.facebook.app_id'); $app_secret = \Config::get('ethanol.facebook.app_secret'); $code = \Arr::get($userdata, 'code'); $redirect_url = urlencode(parent::get_login_controller_path('facebook')); //Get an access token from FB $token_url = "https://graph.facebook.com/oauth/access_token?" . "client_id=" . $app_id . "&redirect_uri=" . $redirect_url . "&client_secret=" . $app_secret . "&code=" . $code; $params = parent::get_access_token($token_url, 'facebook'); //Now we have an access token lets get the email and finally create/check //the ethanol user. $graph_url = "https://graph.facebook.com/me?access_token=" . $params['access_token']; $facebookUser = json_decode(file_get_contents($graph_url)); $email = $facebookUser->email; //Got a user so log in now return parent::perform_login($email, 'facebook'); }