/** * getAuthedGoogleClient * * Will return a Google_Client on success, * or false on failure. * * @return mixed */ function getAuthedGoogleClient($userId) { $fcmsError = FCMS_Error::getInstance(); $config = getGoogleConfigData(); $user = getGoogleUserData($userId); if (empty($user['google_session_token'])) { return false; } if (empty($config['google_client_id']) || empty($config['google_client_secret'])) { return false; } // Setup url for callbacks $callbackUrl = getDomainAndDir(); $callbackUrl .= 'settings.php?view=google&oauth2callback'; $googleClient = new Google_Client(); $googleClient->setClientId($config['google_client_id']); $googleClient->setClientSecret($config['google_client_secret']); $googleClient->setAccessType('offline'); $googleClient->setScopes(array('https://www.googleapis.com/auth/youtube.force-ssl', 'https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile', 'https://picasaweb.google.com/data/')); $googleClient->setRedirectUri($callbackUrl); // We still have a token saved if (isset($_SESSION['googleSessionToken'])) { try { $googleClient->setAccessToken($_SESSION['googleSessionToken']); // Make sure our access token is still good if ($googleClient->isAccessTokenExpired()) { $googleClient->refreshToken($user['google_session_token']); } } catch (Exception $e) { $fcmsError->add(array('type' => 'operation', 'message' => 'Could not get Google Session Token.', 'error' => $e, 'file' => __FILE__, 'line' => __LINE__)); return false; } } elseif (!empty($user['google_session_token'])) { try { $googleClient->refreshToken($user['google_session_token']); $_SESSION['googleSessionToken'] = $googleClient->getAccessToken(); } catch (Exception $e) { $fcmsError->add(array('type' => 'operation', 'message' => 'Could not get Google Session Token.', 'error' => $e, 'file' => __FILE__, 'line' => __LINE__)); return false; } } return $googleClient; }
/** * displayEditGoogle * * @return void */ function displayEditGoogle() { $this->displayHeader(); $config = getGoogleConfigData(); $user = getGoogleUserData($this->fcmsUser->id); // Setup url for callbacks $callbackUrl = getDomainAndDir(); $callbackUrl .= 'settings.php?view=google&oauth2callback'; $_SESSION['callback_url'] = $callbackUrl; if (!empty($config['google_client_id']) || !empty($config['google_client_secret'])) { $googleClient = new Google_Client(); $googleClient->setClientId($config['google_client_id']); $googleClient->setClientSecret($config['google_client_secret']); $googleClient->setAccessType('offline'); $googleClient->setScopes(array('https://www.googleapis.com/auth/youtube.force-ssl', 'https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile', 'https://picasaweb.google.com/data/')); $googleClient->setRedirectUri($callbackUrl); // We still have a token saved if (isset($_SESSION['googleSessionToken'])) { try { $googleClient->setAccessToken($_SESSION['googleSessionToken']); // Make sure our access token is still good if ($googleClient->isAccessTokenExpired()) { $googleClient->refreshToken($user['google_session_token']); } } catch (Exception $e) { $failure = 1; } } elseif (!empty($user['google_session_token'])) { try { $googleClient->refreshToken($user['google_session_token']); $_SESSION['googleSessionToken'] = $googleClient->getAccessToken(); } catch (Exception $e) { $failure = 1; } } if (!isset($failure) && isset($_SESSION['googleSessionToken'])) { try { $youtube = new Google_Service_YouTube($googleClient); $channel = $youtube->channels->listChannels('id', array('mine' => 'true')); } catch (Exception $e) { echo '<div class="error-alert">ERROR: ' . $e->getMessage() . '</div>'; $this->displayFooter(); return; } $oAuth = new Google_Service_Oauth2($googleClient); $userInfo = $oAuth->userinfo->get(); $user = '******' . $channel->items[0]['id'] . '">' . $userInfo->email . '</a>'; $status = sprintf(T_('Currently connected as: %s'), $user); $link = '<a class="disconnect" href="?revoke=google">' . T_('Disconnect') . '</a>'; } else { $state = mt_rand(); $googleClient->setState($state); $_SESSION['state'] = $state; $url = $googleClient->createAuthUrl(); $status = T_('Not Connected'); $link = '<a href="' . $url . '">' . T_('Connect') . '</a>'; } } echo ' <div class="social-media-connect"> <img class="icon" src="ui/img/google.png" alt="Google"/> <h2>Google</h2> <p>' . T_('Connecting with Google will allow you to:') . '</p> <ul> <li>' . T_('Share your Picasa photos with this site.') . '</li> <li>' . T_('Share your YouTube videos with this site.') . '</li> </ul> <div class="status">' . $status . '</div> <div class="action">' . $link . '</div> </div>'; $this->displayFooter(); }
/** * userConnectedSocialMedia * * @param int $userId * * @return boolean */ function userConnectedSocialMedia($userId) { // Get Social Media data $facebook = getUserFacebookAccessToken($userId); $foursquare = getFoursquareUserData($userId); $google = getGoogleUserData($userId); // Facebook if (!empty($facebook)) { return true; } // Foursquare if (!empty($foursquare['fs_user_id']) && !empty($foursquare['fs_access_token'])) { return true; } // Google if (!empty($google['google_session_token'])) { return true; } return false; }