Почему гем OAuth2 генерирует разные URL авторизации в Rails и Ruby? - PullRequest
0 голосов
/ 25 октября 2018

Я использую камень OAuth2 .По какой-то причине параметры GET URL-адреса, возвращаемого authorize_url, упорядочены в irb иначе, чем в rails c.Это также происходит при выполнении тестов RSpec для приложения на Rails по сравнению с выполнением тестов RSpec в сценарии, не связанном с Rails.

Вот несколько примеров, использующих учетные данные оценки , предоставленные SageAPI документация.Оба используют Ruby v2.5.3.

irb

2.5.3 :001 > require 'oauth2'
 => true 
2.5.3 :002 > OAuth2::Client.new(
2.5.3 :003 >     'Th3hm68Na0NrCtYG0btfxSp1wExEvEbN',
2.5.3 :004 >     't3uXL8cuX2qOZaiTdcDw56viXimQRAg3n9vEk3Odd60=',
2.5.3 :005 >     authorize_url: '/SSO/OAuthService/WebStartAuthorisationAttempt',
2.5.3 :006 >     token_url: '/SSO/OAuthService/WebGetAccessToken',
2.5.3 :007 >     site: 'https://eu-oauth.sso.services.sage.com'
2.5.3 :008?>   )
 => #<OAuth2::Client:0x000055c6a0b49dc8 ... > 
2.5.3 :009 > _.auth_code.authorize_url(scope: 'w4q8drmn();', redirect_uri: 'http://localhost:56953/Account/Authorise')

Результат: https://eu -oauth.sso.services.sage.com / SSO / OAuthService / WebStartAuthorisationAttempt? Client_id= Th3hm68Na0NrCtYG0btfxSp1wExEvEbN & redirect_uri = http% 3A% 2F% 2Flocalhost% 3A56953% 2FAccount% 2FAвторизовать & response_type = code & scope = w4q8drmn% 28% 29% 3B * * * * * * * * * * * * 10*https://eu -oauth.sso.services.sage.com / ССО / OAuthService / WebStartAuthorisationAttempt? response_type = код & client_id = Th3hm68Na0NrCtYG0btfxSp1wExEvEbN & Объем = w4q8drmn% 28% 29% 3B & redirect_uri = HTTP% 3A% 2F% 2Flocalhost% 3A56953% 2FAccount% 2FAuthorise

Примечания

Первоначально я предположил, что это было вызвано наличием ActiveSupport , так как я заметил, что параметры кажутся упорядоченными в алфавитном порядке в irb,но не в rails c.

Однако { a: 1, c: 2, b: 3 }.each { |k, v| puts "#{k} = #{v}" } возвращает a = 1 c = 2 b = 3 в обоих случаях, поэтому я не уверен, так ли это на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...