public function requestToken($Account) { $NGPushIni = eZINI::instance('ngpush.ini'); $ConsumerKey = $NGPushIni->variable($Account, 'ConsumerKey'); $ConsumerSecret = $NGPushIni->variable($Account, 'ConsumerSecret'); $AccessToken = $NGPushIni->variable($Account, 'AccessToken'); $AccessTokenSecret = $NGPushIni->variable($Account, 'AccessTokenSecret'); // If access tokens are given if ($AccessToken && $AccessTokenSecret) { // Save request signing tokens to cache ngPushBase::save_token($Account, $AccessToken, 'request_sign_oauth_token'); ngPushBase::save_token($Account, $AccessTokenSecret, 'request_sign_oauth_token_secret'); ngPushBase::save_token($Account, $AccessToken . '%%%' . $AccessTokenSecret, 'main_token'); } else { $connection = new TwitterOAuth($ConsumerKey, $ConsumerSecret); $connection->host = "https://api.twitter.com/1.1/"; $AdministrationUrl = '/'; eZURI::transformURI($AdministrationUrl, false, 'full'); $AdministrationUrl = base64_encode($AdministrationUrl); $SettingsBlock = base64_encode($Account); $temporary_credentials = $connection->getRequestToken('http://' . $NGPushIni->variable('PushNodeSettings', 'ConnectURL') . '/redirect.php/' . $AdministrationUrl . '/' . $SettingsBlock . '?case=twitter'); // Save request signing tokens to cache ngPushBase::save_token($Account, $temporary_credentials['oauth_token'], 'request_sign_oauth_token'); ngPushBase::save_token($Account, $temporary_credentials['oauth_token_secret'], 'request_sign_oauth_token_secret'); $redirect_url = $connection->getAuthorizeURL($temporary_credentials, FALSE); self::$response['RequestPermissionsUrl'] = $redirect_url; } }
public function requestToken($Account) { $NGPushIni = eZINI::instance('ngpush.ini'); $SiteIni = eZINI::instance('site.ini'); $AccessToken = $NGPushIni->variable($Account, 'AccessToken'); // If access tokens are given if ($AccessToken) { //Save request signing tokens to cache ngPushBase::save_token($Account, $AccessToken, 'main_token'); } else { $AdministrationUrl = '/'; eZURI::transformURI($AdministrationUrl, false, 'full'); $AdministrationUrl = base64_encode($AdministrationUrl); $SettingsBlock = base64_encode($Account); $redirectUrl = 'http://' . $NGPushIni->variable('PushNodeSettings', 'ConnectURL') . '/redirect.php/' . $AdministrationUrl . '/' . $SettingsBlock . '?case=facebook'; $Facebook = new Facebook(array('appId' => $NGPushIni->variable($Account, 'AppAPIKey'), 'secret' => $NGPushIni->variable($Account, 'AppSecret'))); $Permissions = array('publish_actions', 'user_posts'); if ($NGPushIni->variable($Account, 'EntityType') == 'page') { $Permissions[] = 'manage_pages'; } $state = md5(uniqid(rand(), true)); $http = eZHTTPTool::instance(); $http->setSessionVariable('ngpush_state', $state); $LoginUrl = $Facebook->getLoginUrl(array('redirect_uri' => $redirectUrl, 'scope' => implode($Permissions, ','), 'state' => $state)); self::$response['RequestPermissionsUrl'] = $LoginUrl; } }
case 'facebook_oauth': $accessToken = explode('%%%', $accessToken); $http = eZHTTPTool::instance(); if ($accessToken[0] != $http->sessionVariable('ngpush_state', '')) { break; } $AdministrationUrl = '/'; eZURI::transformURI($AdministrationUrl, false, 'full'); $AdministrationUrl = base64_encode($AdministrationUrl); $redirectUrl = 'http://' . $NGPushIni->variable('PushNodeSettings', 'ConnectURL') . '/redirect.php/' . $AdministrationUrl . '/' . $Params['SettingsBlock'] . '?case=facebook'; $token_url = "https://graph.facebook.com/oauth/access_token?" . "client_id=" . $NGPushIni->variable($settingsBlock, 'AppId') . "&redirect_uri=" . urlencode($redirectUrl) . "&client_secret=" . $NGPushIni->variable($settingsBlock, 'AppSecret') . "&code=" . $accessToken[1]; $response = file_get_contents($token_url); $params = null; parse_str($response, $params); if (!empty($params['access_token'])) { $saveStatus = ngPushBase::save_token($settingsBlock, $params['access_token'], 'main_token'); } break; default: break; } if ($saveStatus) { $message = ezpI18n::tr('ngpush/ui', 'Access token has been successfully obtained and saved.%brYou can continue using your Netgen Push application.', null, array('%br' => '<br />')); } else { $message = ezpI18n::tr('ngpush/ui', 'An error has occured.%brYour access token could not be saved, please contact your Netgen Push administrator.', null, array('%br' => '<br />')); } $tpl = eZTemplate::factory(); $tpl->setVariable('message', $message); $Result = array(); $Result['pagelayout'] = false; $Result['content'] = $tpl->fetch("design:push/message.tpl");