Я использую камень 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
в обоих случаях, поэтому я не уверен, так ли это на самом деле.