public static function create_gp_access_token($code = '') { if (!$code) { return false; } if (empty(self::$gp_client)) { self::init_gp(); } self::$gp_client->authenticate($code); $access_token = self::$gp_client->getAccessToken(); // Get current user with access token $plus = new \Google_Service_Plus(self::$gp_client); $me = $plus->people->get("me"); try { DB::beginTransaction(); // Create new user with email if not exist in db if (!empty($me['emails']) && !empty($me['emails'][0])) { $email = $me['emails'][0]->getValue(); $user = User::where('email', '=', $email)->first(); if (!$user) { $password = str_random(8); $user = new User(); $user->email = $email; $user->name = $me['displayName']; $user->password = $password; $user->password_confirmation = $password; $user->is_activated = true; $user->username = $email; } $user->gp_uid = $me['id']; $user->save(); UserAccessToken::sendEmailAfterRegister($user->name, $user->email); // Save user avatar if (!empty($me['image']) && !empty($me['image']['url'])) { $image_url = $me['image']['url']; $image_url = str_replace('?sz=50', '?sz=250', $image_url); self::getUserAvatar($user->id, $image_url); } // Save to UserAccessToken table $record = self::whereRaw('user_id = ? AND type = ?', array($user->id, 'googleplus'))->first(); if (!$record) { $record = new self(); $record->user_id = $user->id; } $record->access_token = $access_token; $record->type = 'googleplus'; $record->save(); Auth::login($user); } } catch (Exception $ex) { DB::rollback(); } DB::commit(); return $access_token; }
public function getCallbackFB() { $data = get(); if (!empty($data['code'])) { $app_id = UserAccessToken::$app_id; $app_secret = UserAccessToken::$app_secret; $redirect_uri = OCT_ROOT . '/api/v1/callback_fb'; try { $url = self::$graph . "oauth/access_token?code={$data['code']}&client_id={$app_id}&client_secret={$app_secret}&redirect_uri={$redirect_uri}"; $data = @file_get_contents($url); parse_str($data); if ($access_token) { $access_token = trim($access_token); // Grant access_token $url = self::$graph . "oauth/access_token?client_id={$app_id}&client_secret={$app_secret}&grant_type=fb_exchange_token&fb_exchange_token={$access_token}"; $data = @file_get_contents($url); parse_str($data); if (Auth::check()) { $user = Auth::getUser(); $user_id = $user->id; $user->save(); $obj = UserAccessToken::check_fb_access_token($access_token); if ($obj->user_id) { $user->fb_uid = $obj->user_id; $fb_uid = $obj->user_id; $user->save(); self::saveUserAccessToken($user_id, $access_token, 'facebook'); } } else { // Get current facebook user email $obj = UserAccessToken::check_fb_access_token($access_token); if ($obj) { $fb_uid = $obj->user_id; $fb_user = UserAccessToken::get_fb_user_infor($fb_uid, $access_token); if (!empty($fb_user->email)) { DB::beginTransaction(); try { // Check user exists in DB $user = User::where('email', '=', $fb_user->email)->first(); if (!$user) { $password = str_random(8); $user = new User(); $user->password = $password; $user->password_confirmation = $password; $user->is_activated = true; $user->email = $fb_user->email; $user->name = $fb_user->name; $user->username = $fb_user->email; } $user->fb_uid = $fb_user->id; $user->save(); UserAccessToken::sendEmailAfterRegister($user->name, $user->email); self::saveUserAccessToken($user->id, $access_token, 'facebook'); Auth::login($user); } catch (Exception $e) { DB::rollback(); throw $e; } DB::commit(); } } } // Save user avatar if ($fb_uid) { $image_url = "http://graph.facebook.com/v2.2/{$fb_uid}/picture?type=large"; UserAccessToken::getUserAvatar($user->id, $image_url); } return Redirect::to(HelperClassified::redirect_return_url()); } } catch (Exception $ex) { throw $ex; return Response::json(array('status' => 'error', 'message' => $ex->getMessage()), 500); } } return Response::json(array('status' => 'success'), 200); }