Rev 43 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/** Facebook OAuth*/// Include the autoloader provided in the SDKrequire_once __DIR__ . '/social_oauth_lib/facebook-php-sdk/autoload.php';// Include required librariesuse Facebook\Facebook;use Facebook\Exceptions\FacebookResponseException;use Facebook\Exceptions\FacebookSDKException;$fb = new Facebook(array('app_id' => FB_APP_ID,'app_secret' => FB_APP_SECRET,'default_graph_version' => 'v2.10','persistent_data_handler' => 'session'));// Get redirect login helper$helper = $fb->getRedirectLoginHelper();if (isset($_GET['state'])) {$_SESSION['FBRLH_state'] = $_GET['state'];}if ((isset($_REQUEST['state']) && isset($_REQUEST['code'])) || isset($_SESSION['facebook_access_token'])) {// Try to get access tokentry {if (isset($_SESSION['facebook_access_token'])) {$fbAccessToken = $_SESSION['facebook_access_token'];}else {$fbAccessToken = $helper->getAccessToken(SOCIAL_REDIRECT_URL);}}catch(FacebookResponseException $e) {echo 'Graph returned an error: ' . $e->getMessage();exit;}catch(FacebookSDKException $e) {echo 'Facebook SDK returned an error: ' . $e->getMessage();exit;}}if (isset($fbAccessToken)) {if (isset($_SESSION['facebook_access_token'])) {$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);}else {// Put short-lived access token in session$_SESSION['facebook_access_token'] = (string)$fbAccessToken;// OAuth 2.0 client handler helps to manage access tokens$oAuth2Client = $fb->getOAuth2Client();// Exchanges a short-lived access token for a long-lived one$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);$_SESSION['facebook_access_token'] = (string)$longLivedAccessToken;// Set default access token to be used in script$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);}// Redirect the user back to the same page if url has "code" parameter in query stringif (isset($_GET['code'])) {MySessionHandler::commit(session_id());header('Location: ./');exit;}// Getting user facebook profile infotry {$profileRequest = $fb->get('/me?fields=name,first_name,last_name,email,link,picture');$fbUserProfile = $profileRequest->getGraphNode()->asArray();}catch(FacebookResponseException $e) {echo 'Graph returned an error: ' . $e->getMessage();session_destroy();// Redirect user back to app login pageMySessionHandler::commit(session_id());header("Location: ./");exit;}catch(FacebookSDKException $e) {echo 'Facebook SDK returned an error: ' . $e->getMessage();exit;}// Initialize User class$user = new User();// Getting user profile info$fbUserData = array();$fbUserData['oauth_uid'] = !empty($fbUserProfile['id']) ? $fbUserProfile['id'] : '';$fbUserData['first_name'] = !empty($fbUserProfile['first_name']) ? $fbUserProfile['first_name'] : '';$fbUserData['last_name'] = !empty($fbUserProfile['last_name']) ? $fbUserProfile['last_name'] : '';$fbUserData['email'] = !empty($fbUserProfile['email']) ? $fbUserProfile['email'] : '';$fbUserData['picture'] = !empty($fbUserProfile['picture']['url']) ? $fbUserProfile['picture']['url'] : '';$fbUserData['link'] = !empty($fbUserProfile['link']) ? $fbUserProfile['link'] : '';// Insert or update user data to the database$fbUserData['oauth_provider'] = 'facebook';$userData = $user->checkUser($fbUserData);// Get logout url$logoutURL = $helper->getLogoutUrl($fbAccessToken, BASE_URL . 'userAccount.php?logoutSubmit=1');// Store login status into the session$sessData['userLoggedIn'] = true;$sessData['userID'] = $userData['id'];$sessData['loginType'] = 'social';$_SESSION['sessData'] = $sessData;// Redirect to my accountMySessionHandler::commit(session_id());header("Location: account.php");exit();}else {// Get login url$fbLoginURL = $helper->getLoginUrl(SOCIAL_REDIRECT_URL, array('email'));$fbLoginURL = filter_var($fbLoginURL, FILTER_SANITIZE_URL);}/** Google OAuth*/// Include Google client libraryrequire_once 'social_oauth_lib/google-php-client/Google_Client.php';require_once 'social_oauth_lib/google-php-client/contrib/Google_Oauth2Service.php';// Call Google API$gClient = new Google_Client();$gClient->setApplicationName('Login to FindCheapMusic.com');$gClient->setClientId(GP_CLIENT_ID);$gClient->setClientSecret(GP_CLIENT_SECRET);$gClient->setRedirectUri(SOCIAL_REDIRECT_URL);$google_oauthV2 = new Google_Oauth2Service($gClient);if (isset($_GET['code'])) {$gClient->authenticate($_GET['code']);$_SESSION['google_access_token'] = $gClient->getAccessToken();MySessionHandler::commit(session_id());header('Location: ' . filter_var(BASE_URL, FILTER_SANITIZE_URL));exit;}if (isset($_SESSION['google_access_token'])) {$gClient->setAccessToken($_SESSION['google_access_token']);}if ($gClient->getAccessToken() && !isset($_GET['logoutSubmit'])) {// Get user profile data from google$gpUserProfile = $google_oauthV2->userinfo->get();// Initialize User class$user = new User();// Getting user profile info$gpUserData = array();$gpUserData['oauth_uid'] = !empty($gpUserProfile['id']) ? $gpUserProfile['id'] : '';$gpUserData['first_name'] = !empty($gpUserProfile['given_name']) ? $gpUserProfile['given_name'] : '';$gpUserData['last_name'] = !empty($gpUserProfile['family_name']) ? $gpUserProfile['family_name'] : '';$gpUserData['email'] = !empty($gpUserProfile['email']) ? $gpUserProfile['email'] : '';$gpUserData['picture'] = !empty($gpUserProfile['picture']) ? $gpUserProfile['picture'] : '';$gpUserData['link'] = !empty($gpUserProfile['link']) ? $gpUserProfile['link'] : '';// Insert or update user data to the database$gpUserData['oauth_provider'] = 'google';$userData = $user->checkUser($gpUserData);// Store login status into the session$sessData['userLoggedIn'] = true;$sessData['userID'] = $userData['id'];$sessData['loginType'] = 'social';$_SESSION['sessData'] = $sessData;// Redirect to my accountMySessionHandler::commit(session_id());header("Location: account.php");exit();}else {$gpLoginURL = $gClient->createAuthUrl();$gpLoginURL = filter_var($gpLoginURL, FILTER_SANITIZE_URL);}/** Twitter OAuth*/// Include Twitter client libraryrequire_once 'social_oauth_lib/twitter-php-oauth/twitteroauth.php';// If OAuth token not matchedif (isset($_REQUEST['oauth_token']) && $_SESSION['twitter_access_token'] !== $_REQUEST['oauth_token']) {// Remove token from sessionunset($_SESSION['twitter_access_token']);unset($_SESSION['twitter_token_secret']);}// If user already verifiedif (isset($_SESSION['status']) && $_SESSION['status'] == 'verified' && !empty($_SESSION['request_vars'])) {// Retrive variables from session$username = $_SESSION['request_vars']['screen_name'];$twitterId = $_SESSION['request_vars']['user_id'];$oauthToken = $_SESSION['request_vars']['oauth_token'];$oauthTokenSecret = $_SESSION['request_vars']['oauth_token_secret'];$profilePicture = $_SESSION['userData']['picture'];}elseif (isset($_REQUEST['oauth_token']) && $_SESSION['twitter_access_token'] == $_REQUEST['oauth_token']) {// Call Twitter API$twClient = new TwitterOAuth(TW_CONSUMER_KEY, TW_CONSUMER_SECRET, $_SESSION['twitter_access_token'], $_SESSION['twitter_token_secret']);// Get OAuth token$tw_access_token = $twClient->getAccessToken($_REQUEST['oauth_verifier']);// If returns successif ($twClient->http_code == '200') {// Storing access token data into session$_SESSION['status'] = 'verified';$_SESSION['request_vars'] = $tw_access_token;// Get user profile data from twitter$userInfo = $twClient->get('account/verify_credentials', ['include_email' => 'true']);// Initialize User class$user = new User();// Getting user profile info$name = explode(" ", $userInfo->name);$twUserData = array();$twUserData['oauth_uid'] = !empty($userInfo->id) ? $userInfo->id : '';$twUserData['first_name'] = !empty($name[0]) ? $name[0] : '';$twUserData['last_name'] = !empty($name[1]) ? $name[1] : '';$twUserData['email'] = !empty($userInfo->email) ? $userInfo->email : '';$twUserData['picture'] = !empty($userInfo->profile_image_url) ? str_replace('http://', 'https://', $userInfo->profile_image_url) : '';$twUserData['link'] = !empty($userInfo->screen_name) ? 'https://twitter.com/' . $userInfo->screen_name : '';$twUserData['username'] = !empty($userInfo->screen_name) ? $userInfo->screen_name : '';// Insert or update user data to the database$twUserData['oauth_provider'] = 'twitter';$userData = $user->checkUser($twUserData);// Store login status into the session$sessData['userLoggedIn'] = true;$sessData['userID'] = $userData['id'];$sessData['loginType'] = 'social';$_SESSION['sessData'] = $sessData;// Remove oauth token and secret from sessionunset($_SESSION['twitter_access_token']);unset($_SESSION['twitter_token_secret']);// Redirect to my accountMySessionHandler::commit(session_id());header("Location: account.php");exit();}}else {// Fresh authentication$twClient = new TwitterOAuth(TW_CONSUMER_KEY, TW_CONSUMER_SECRET);$request_token = $twClient->getRequestToken(SOCIAL_REDIRECT_URL);// Get twitter oauth url$_SESSION['twitter_access_token'] = $request_token['oauth_token'];$_SESSION['twitter_token_secret'] = $request_token['oauth_token_secret'];// If authentication returns successif ($twClient->http_code == '200') {$twLoginURL = $twClient->getAuthorizeURL($request_token['oauth_token']);$twLoginURL = filter_var($twLoginURL, FILTER_SANITIZE_URL);}}?>