id = 'settings_page_' . $this->page_name ) { if ( isset( $_GET['code'] ) ) { $token = $this->get_token( $_GET['code'] ); if ( $token ) { add_settings_error( 'strava_token', 'strava_token', sprintf( __( 'New Strava Token Retrieved: %s', 'wp-strava' ), $this->feedback ) , 'updated' ); update_option( 'strava_token', $token ); } else { add_settings_error( 'strava_token', 'strava_token', $this->feedback ); } } } } /** * This runs after options are saved */ public function option_home() { if ( isset( $_POST['option_page'] ) && $_POST['option_page'] == $this->option_page ) { //redirect only if all the right options are in place $errors = get_settings_errors(); if ( ! empty( $errors ) ) return; $client_id = get_option( 'strava_client_id' ); $client_secret = get_option( 'strava_client_secret' ); if ( $client_id && $client_secret ) { $redirect = admin_url( "options-general.php?page={$this->page_name}" ); $url = "https://www.strava.com/oauth/authorize?client_id={$client_id}&response_type=code&redirect_uri={$redirect}&approval_prompt=force"; wp_redirect( $url ); exit(); } } } public function add_strava_menu() { add_options_page( __( 'Strava Settings', 'wp-strava' ), __( 'Strava', 'wp-strava' ), 'manage_options', $this->page_name, array( $this, 'print_strava_options' ) ); } public function register_strava_settings() { $this->token = get_option( 'strava_token' ); add_settings_section( 'strava_api', __( 'Strava API', 'wp-strava' ), array( $this, 'print_api_instructions' ), 'wp-strava' ); //NULL / NULL no section label needed if ( ! $this->token ) { register_setting( $this->option_page, 'strava_client_id', array( $this, 'sanitize_client_id' ) ); register_setting( $this->option_page, 'strava_client_secret', array( $this, 'sanitize_client_secret' ) ); add_settings_field( 'strava_client_id', __( 'Strava Client ID', 'wp-strava' ), array( $this, 'print_client_input' ), 'wp-strava', 'strava_api' ); add_settings_field( 'strava_client_secret', __( 'Strava Client Secret', 'wp-strava' ), array( $this, 'print_secret_input' ), 'wp-strava', 'strava_api' ); } else { register_setting( $this->option_page, 'strava_token', array( $this, 'sanitize_token' ) ); add_settings_field( 'strava_token', __( 'Strava Token', 'wp-strava' ), array( $this, 'print_token_input' ), 'wp-strava', 'strava_api' ); } register_setting( $this->option_page, 'strava_som', array( $this, 'sanitize_som' ) ); add_settings_section( 'strava_options', __( 'Options', 'wp-strava' ), NULL, 'wp-strava' ); add_settings_field( 'strava_som', __( 'System of Measurement', 'wp-strava' ), array( $this, 'print_som_input' ), 'wp-strava', 'strava_options' ); } public function print_api_instructions() { ?>

Steps:

  1. Create your app here: http://www.strava.com/developers
  2. Use the following information:

  3. Once you've created your application, enter the Client ID and Client Secret below, which can be found at https://www.strava.com/settings/api
  4. You'll be redirected to strava to authorize your app after saving your Client ID and Secret. If successful, your Strava Token will display
  5. Erase your Strava Token if you need to re-authorize

option_page ); ?>

get_token( $_GET['code'] ); if ( $token ) { add_settings_error( 'strava_token', 'strava_token', sprintf( __( 'New Strava Token Retrieved: %s', 'wp-strava' ), $this->feedback ) , 'updated' ); return $token; } else { add_settings_error( 'strava_token', 'strava_token', $this->feedback ); return NULL; } } */ return $token; } private function get_token( $code ) { $client_id = get_option( 'strava_client_id' ); $client_secret = get_option( 'strava_client_secret' ); if ( $client_id && $client_secret ) { $data = array( 'client_id' => $client_id, 'client_secret' => $client_secret, 'code' => $code ); $strava_info = WPStrava::get_instance()->api->post( 'oauth/token', $data ); if( $strava_info ) { if( isset( $strava_info->access_token ) ) { $this->feedback .= __( 'Successfully authenticated.', 'wp-strava' ); return $strava_info->access_token; } else { $this->feedback .= __( 'Authentication failed, please check your credentials.', 'wp-strava' ); return false; } } else { $this->feedback .= __( 'There was an error pulling data of strava.com.', 'wp-strava' ); return false; } } else { $this->feedback .= __( 'Missing Client ID or Client Secret.', 'wp-strava' ); return false; } } public function print_options_label() { ?>

Options