Le plugin oauth2-basic peut-il convertir du texte en JSON ?

Pour me connecter avec un compte WECHAT, j’ai essayé d’utiliser le plugin oatuh2-basic mais j’ai rencontré un problème.

Normalement, le serveur WECHAT devrait retourner application/json, puis le plugin peut lire l’USID dans la chaîne json.

Malheureusement, le serveur retourne juste text/plain, qui ne peut pas être lu par le plugin.

Voici le résultat. L’un s’est connecté avec succès avec WEIBO, et l’autre a essayé de se connecter avec WECHAT mais a échoué.

J’ai essayé de modifier le code du plugin mais j’ai échoué, car je n’ai aucune idée de comment gérer le langage ruby.

Quelqu’un peut-il me dire où le code doit être modifié ? Ou y a-t-il une possibilité que le plugin puisse être mis à jour ?

Voici la trace d’appels

Message

(oauth2_basic) Échec de l'authentification ! invalid_credentials: 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

Donnez une direction à mes compatriotes chinois. Dans le fichier containers/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/oauth2-1.4.7/lib/oauth2/response.rb, il y a le code suivant :

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

Changez-le comme suit :

'text/plain' => :json,

Bien sûr, cela ne sera utile que pour WeChat, car seul WeChat renvoie du texte.

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