public function process_authorization() { $reconnect = $_REQUEST['action'] == 'ecwid_oauth_reconnect'; if (isset($_REQUEST['error']) || !isset($_REQUEST['code'])) { if ($reconnect) { $this->update_state(array('mode' => self::MODE_RECONNECT, 'error' => 'cancelled')); } else { $this->update_state(array('mode' => self::MODE_CONNECT, 'error' => 'cancelled')); } wp_redirect('admin.php?page=ecwid&connection_error' . ($reconnect ? '&reconnect' : '')); exit; } $base_admin_url = 'admin-post.php?action=ecwid_oauth' . ($reconnect ? '_reconnect' : ''); $params['code'] = $_REQUEST['code']; $params['client_id'] = self::OAUTH_CLIENT_ID; $params['client_secret'] = self::OAUTH_CLIENT_SECRET; $params['redirect_uri'] = admin_url($base_admin_url); $params['grant_type'] = 'authorization_code'; $return = EcwidPlatform::http_post_request('https://my.ecwid.com/api/oauth/token', $params); if (is_array($return) && isset($return['body'])) { $result = json_decode($return['body']); } if (!is_array($return) || !isset($result->store_id) || !isset($result->scope) || !isset($result->access_token) || $result->token_type != 'Bearer') { ecwid_log_error(var_export($return, true)); return $this->trigger_auth_error($reconnect ? 'reconnect' : 'default'); } Ecwid_Kissmetrics::record($reconnect ? 'accountReconnected' : 'accountConnected'); update_option('ecwid_store_id', $result->store_id); update_option('ecwid_oauth_scope', $result->scope); $this->_init_crypt(); $this->_save_token($result->access_token); // Reset "Create store cookie" set previously to display the landing page //in "Connect" mode rather than "Create" mode setcookie('ecwid_create_store_clicked', null, strtotime('-1 day'), ADMIN_COOKIE_PATH, COOKIE_DOMAIN); if (isset($this->state->return_url) && !empty($this->state->return_url)) { wp_redirect(admin_url($this->state->return_url)); } else { $url = ''; if ($reconnect) { $url = 'admin.php?page=ecwid&setting-updated=true'; } else { $url = 'admin.php?page=ecwid'; } wp_redirect($url); } exit; }
public static function init() { self::$instance = new Ecwid_Kissmetrics(); }