From 1153bd5ab66f11e4b61e00d26103b6646e86f880 Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Fri, 2 Apr 2021 09:43:18 +0800 Subject: [PATCH] fix: set redirect_uri --- app/controllers/oauth/educoder_controller.rb | 6 +----- app/controllers/settings_controller.rb | 2 +- app/libs/educoder_oauth.rb | 4 ++-- app/libs/educoder_oauth/service.rb | 6 +++--- config/configuration.yml.example | 1 + config/initializers/educoder_oauth_init.rb | 1 + 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index a79a3dd0..685e245c 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -40,13 +40,9 @@ class Oauth::EducoderController < Oauth::BaseController begin code = params['code'].to_s.strip tip_exception("code不能为空") if code.blank? - redirect_uri = [request.protocol, request.host_with_port, '/api/auth/educoder/callback'].join('') - Rails.logger.info redirect_uri - redirect_uri = 'https://testforgeplus.trustie.net/api/auth/educoder/callback' - Rails.logger.info redirect_uri new_user = false - result = EducoderOauth::Service.access_token(code, redirect_uri) + result = EducoderOauth::Service.access_token(code) result = EducoderOauth::Service.user_info(result[:access_token]) # 存在该用户 diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb index eab27636..b03edb1f 100644 --- a/app/controllers/settings_controller.rb +++ b/app/controllers/settings_controller.rb @@ -44,7 +44,7 @@ class SettingsController < ApplicationController @third_party = [] @third_party << { name: 'educoder', - url: EducoderOauth.oauth_url([request.protocol, request.host_with_port, '/api/auth/educoder/callback'].join('')) + url: EducoderOauth.oauth_url } end diff --git a/app/libs/educoder_oauth.rb b/app/libs/educoder_oauth.rb index 3fa06dcd..0c3fb61b 100644 --- a/app/libs/educoder_oauth.rb +++ b/app/libs/educoder_oauth.rb @@ -1,6 +1,6 @@ module EducoderOauth class << self - attr_accessor :client_id, :client_secret, :base_url + attr_accessor :client_id, :client_secret, :base_url, :redirect_uri def logger @_logger ||= STDOUT @@ -10,7 +10,7 @@ module EducoderOauth @_logger = l end - def oauth_url(redirect_uri) + def oauth_url "#{base_url}/oauth2?call_url=/oauth/authorize?client_id=#{client_id}&redirect_uri=#{URI.encode_www_form_component(redirect_uri)}&response_type=code" end diff --git a/app/libs/educoder_oauth/service.rb b/app/libs/educoder_oauth/service.rb index 29f5f1eb..9d93d314 100644 --- a/app/libs/educoder_oauth/service.rb +++ b/app/libs/educoder_oauth/service.rb @@ -19,12 +19,12 @@ module EducoderOauth::Service end end - def access_token(code, redirect_uri) + def access_token(code) begin Rails.logger.info("[EducoderOauth] [code] #{code} ") - Rails.logger.info("[EducoderOauth] [redirect_uri] #{redirect_uri} ") + Rails.logger.info("[EducoderOauth] [redirect_uri] #{EducoderOauth.redirect_uri} ") client = OAuth2::Client.new(EducoderOauth.client_id, EducoderOauth.client_secret, site: EducoderOauth.base_url) - result = client.auth_code.get_token(code, redirect_uri: redirect_uri).to_hash + result = client.auth_code.get_token(code, redirect_uri: EducoderOauth.redirect_uri).to_hash return result rescue Exception => e raise Educoder::TipException.new(e.message) diff --git a/config/configuration.yml.example b/config/configuration.yml.example index 1bb25ec3..3c2d90b7 100644 --- a/config/configuration.yml.example +++ b/config/configuration.yml.example @@ -47,6 +47,7 @@ default: &default client_id: 'e9ce4d5ba1698d6f7d01d8ee2959776c7a6d743ebe94da2341e288fd2fbf60aa' client_secret: '6ff84dd75eddd859c5bd0e7a791b58bc5ad1ba4fbb30bc9db37cb0baf9f33012' base_url: 'https://test-data.educoder.net' + redirect_uri: 'https://testforgeplus.trustie.net/api/auth/educoder/callback' gitea: access_key_id: 'root' diff --git a/config/initializers/educoder_oauth_init.rb b/config/initializers/educoder_oauth_init.rb index 1ef46bc9..0f47cc7c 100644 --- a/config/initializers/educoder_oauth_init.rb +++ b/config/initializers/educoder_oauth_init.rb @@ -13,3 +13,4 @@ end EducoderOauth.client_id = oauth_config['client_id'] EducoderOauth.client_secret = oauth_config['client_secret'] EducoderOauth.base_url = oauth_config['base_url'] +EducoderOauth.redirect_uri = oauth_config['redirect_uri']