هل يمكن لـ plugin oauth2-basic تحويل النص إلى json؟

لتسجيل الدخول باستخدام حساب WECHAT، حاولت استخدام المكون الإضافي oatuh2-basic ولكني واجهت مشكلة.

عادةً، يجب أن يُرجع خادم WECHAT application/json، ثم يمكن للمكون الإضافي قراءة USID في سلسلة json.

لسوء الحظ، يُرجع الخادم text/plain فقط، والذي لا يمكن للمكون الإضافي قراءته.

هذه هي النتيجة. قام أحدهم بتسجيل الدخول باستخدام WEIBO بنجاح، وحاول آخر تسجيل الدخول باستخدام WECHAT ولكنه فشل.

لقد حاولت تعديل كود المكون الإضافي ولكني فشلت، لأنني لا أعرف كيفية التعامل مع لغة روبي.

إذًا، هل يمكن لأحد أن يخبرني أين يجب تعديل الكود؟ أو هل هناك أي احتمال لتحديث المكون الإضافي؟

هذا هو تتبع المكدس

Message

(oauth2_basic) فشل المصادقة! بيانات اعتماد غير صالحة: OAuth2::Error, {"access_token":"60_xf-0xS4znmnu9z-2ZDhNN40RRluErfbiThzzoDz9p8-Ki9pH-A3ML2n3q6UhT7D6d6iCXlEVS5B7kGFsnhW2JHq6eXHNWOgzqXqMsAvhfY4","expires_in":7200,"refresh_token":"60_gfsBHpp0btOnWaZpnRXMywNTzDURCymRtw8sQj21XXC99aebh58Mb4vBGiKaXdYqDGkdovn2ytFoiqavsSWHLt_UiExbkPYA0z-4DBVjDlA","openid":"o01u45oBVM2YbPzmxXau263z_iW4","scope":"snsapi_base"}

Backtrace

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:163:in `log'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:486:in `fail!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-oauth2-1.7.2/lib/omniauth/strategies/oauth2.rb:96:in `rescue in callback_phase'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-oauth2-1.7.2/lib/omniauth/strategies/oauth2.rb:84:in `callback_phase'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:238:in `callback_call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:189:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:192:in `call!'

Env

HTTP HOSTS: frps.southdog.cool

إرشاد الزملاء الصينيين إلى طريق واضح، في
container/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/oauth2-1.4.7/lib/oauth2/response.rb يوجد الكود التالي

    # Content type assignments for various potential HTTP content types.
    @@content_types = {
      'application/json' => :json,
      ………………
      'text/plain' => :text,
    }

قم بتغييره إلى ما يلي:

'text/plain' => :json,

بالطبع، سيكون هذا مفيدًا فقط لـ WeChat، لأن WeChat فقط هو الذي يعيد نصًا.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.