Пример #1
0
 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;
     }
 }
Пример #2
0
 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;
     }
 }
Пример #3
0
    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");