oauth2 1.4.7 → 2.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +811 -76
  4. data/CITATION.cff +20 -0
  5. data/CODE_OF_CONDUCT.md +24 -23
  6. data/CONTRIBUTING.md +221 -0
  7. data/FUNDING.md +74 -0
  8. data/IRP.md +107 -0
  9. data/{LICENSE → LICENSE.txt} +2 -2
  10. data/OIDC.md +167 -0
  11. data/README.md +1468 -166
  12. data/REEK +2 -0
  13. data/RUBOCOP.md +71 -0
  14. data/SECURITY.md +24 -0
  15. data/THREAT_MODEL.md +94 -0
  16. data/lib/oauth2/access_token.rb +276 -40
  17. data/lib/oauth2/auth_sanitizer.rb +36 -0
  18. data/lib/oauth2/authenticator.rb +51 -10
  19. data/lib/oauth2/client.rb +444 -124
  20. data/lib/oauth2/error.rb +63 -24
  21. data/lib/oauth2/filtered_attributes.rb +10 -0
  22. data/lib/oauth2/response.rb +138 -43
  23. data/lib/oauth2/strategy/assertion.rb +71 -41
  24. data/lib/oauth2/strategy/auth_code.rb +28 -5
  25. data/lib/oauth2/strategy/base.rb +2 -0
  26. data/lib/oauth2/strategy/client_credentials.rb +6 -4
  27. data/lib/oauth2/strategy/implicit.rb +20 -3
  28. data/lib/oauth2/strategy/password.rb +17 -5
  29. data/lib/oauth2/version.rb +2 -59
  30. data/lib/oauth2.rb +103 -12
  31. data/sig/oauth2/access_token.rbs +25 -0
  32. data/sig/oauth2/authenticator.rbs +22 -0
  33. data/sig/oauth2/client.rbs +52 -0
  34. data/sig/oauth2/error.rbs +8 -0
  35. data/sig/oauth2/filtered_attributes.rbs +11 -0
  36. data/sig/oauth2/response.rbs +18 -0
  37. data/sig/oauth2/sanitized_logger.rbs +32 -0
  38. data/sig/oauth2/strategy.rbs +34 -0
  39. data/sig/oauth2/thing_filter.rbs +10 -0
  40. data/sig/oauth2/version.rbs +5 -0
  41. data/sig/oauth2.rbs +9 -0
  42. data.tar.gz.sig +0 -0
  43. metadata +293 -102
  44. metadata.gz.sig +4 -0
  45. data/lib/oauth2/mac_token.rb +0 -130
  46. data/spec/helper.rb +0 -37
  47. data/spec/oauth2/access_token_spec.rb +0 -216
  48. data/spec/oauth2/authenticator_spec.rb +0 -84
  49. data/spec/oauth2/client_spec.rb +0 -506
  50. data/spec/oauth2/mac_token_spec.rb +0 -117
  51. data/spec/oauth2/response_spec.rb +0 -90
  52. data/spec/oauth2/strategy/assertion_spec.rb +0 -58
  53. data/spec/oauth2/strategy/auth_code_spec.rb +0 -107
  54. data/spec/oauth2/strategy/base_spec.rb +0 -5
  55. data/spec/oauth2/strategy/client_credentials_spec.rb +0 -69
  56. data/spec/oauth2/strategy/implicit_spec.rb +0 -26
  57. data/spec/oauth2/strategy/password_spec.rb +0 -55
  58. data/spec/oauth2/version_spec.rb +0 -23
data/CHANGELOG.md CHANGED
@@ -1,60 +1,645 @@
1
- # Change Log
1
+ # Changelog
2
+
3
+ [![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog]
4
+
2
5
  All notable changes to this project will be documented in this file.
3
6
 
4
- ## unreleased
7
+ The format is based on [Keep a Changelog][📗keep-changelog],
8
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
9
+ and [yes][📌major-versions-not-sacred], platform and engine support are part of the [public API][📌semver-breaking].
10
+ Please file a bug if you notice a violation of semantic versioning.
11
+
12
+ [📌semver]: https://semver.org/spec/v2.0.0.html
13
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
14
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
15
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
16
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
17
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
18
+
19
+ ## [Unreleased]
20
+
21
+ ### Added
22
+
23
+ ### Changed
24
+
25
+ ### Deprecated
26
+
27
+ ### Removed
28
+
29
+ ### Fixed
30
+
31
+ ### Security
32
+
33
+ ## [2.0.20] - 2026-05-20
34
+
35
+ - TAG: [v2.0.20][2.0.20t]
36
+ - COVERAGE: 99.62% -- 525/527 lines in 15 files
37
+ - BRANCH COVERAGE: 98.88% -- 176/178 branches in 15 files
38
+ - 88.35% documented
39
+
40
+ ### Added
41
+
42
+ - OAuth2::VERSION (Traditional Constant Location)
43
+
44
+ ### Changed
45
+
46
+ - auth-sanitizer v0.1.3
47
+
48
+ ### Fixed
49
+
50
+ - [gh!721][gh!721] Load `auth-sanitizer` through an internal isolated loader so requiring `oauth2` does not add top-level `Auth` or `AuthSanitizer` constants that may collide with downstream applications by @pboling
51
+
52
+ ### Security
53
+
54
+ [gh!721]: https://github.com/ruby-oauth/oauth2/pull/721
55
+
56
+ ## [2.0.19] - 2026-05-15
5
57
 
6
- ## [1.4.7] - 2021-03-18
58
+ - TAG: [v2.0.19][2.0.19t]
59
+ - COVERAGE: 100.00% -- 515/515 lines in 14 files
60
+ - BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files
61
+ - 89.11% documented
62
+
63
+ ### Added
64
+
65
+ - [gh!707][gh!707] Add `OAuth2.config[:filtered_label]` to configure the placeholder used for filtered sensitive values in inspected objects and debug logging output by @pboling
66
+ - [gh!707][gh!707] Add `OAuth2.config[:filtered_debug_keys]` to configure which key names have their values redacted from debug logging output by @pboling
67
+
68
+ ### Changed
69
+
70
+ - [gh!707][gh!707] Make inspect-time and debug-log filters snapshot their configuration at initialization time rather than tracking later config changes by @pboling
71
+ - [gh!714][gh!714]Refactor sensitive-value filtering to use `auth-sanitizer` while preserving `OAuth2::FilteredAttributes` as a permanent API alias by @pboling
72
+
73
+ ### Removed
74
+
75
+ - Remove the internal `OAuth2::ThingFilter` and `OAuth2::SanitizedLogger` implementations now provided by `auth-sanitizer` by @pboling
76
+
77
+ ### Security
78
+
79
+ - [gh!707][gh!707] Redact sensitive values from debug logging output, including Authorization headers and common token/secret fields in headers, query strings, form bodies, and JSON payloads by @pboling
80
+ - NOTE: debug logging has always been, and remains, opt-in. It is turned off by default.
81
+
82
+ [gh!707]: https://github.com/ruby-oauth/oauth2/pull/707
83
+ [gh!714]: https://github.com/ruby-oauth/oauth2/pull/714
84
+
85
+ ## [2.0.18] - 2025-11-08
86
+
87
+ - TAG: [v2.0.18][2.0.18t]
88
+ - COVERAGE: 100.00% -- 526/526 lines in 14 files
89
+ - BRANCH COVERAGE: 100.00% -- 178/178 branches in 14 files
90
+ - 90.48% documented
91
+
92
+ ### Added
93
+
94
+ - [gh!683][gh!683], [gh!684][gh!684] - Improve documentation by @pboling
95
+ - [gh!686][gh!686]- Add Incident Response Plan by @pboling
96
+ - [gh!687][gh!687]- Add Threat Model by @pboling
97
+
98
+ ### Changed
99
+
100
+ - [gh!685][gh!685] - upgrade kettle-dev v1.1.24 by @pboling
101
+ - upgrade kettle-dev v1.1.52 by @pboling
102
+ - Add open collective donors to README
103
+
104
+ ### Fixed
105
+
106
+ - [gh!690][gh!690], [gh!691][gh!691], [gh!692][gh!692] - Add yard-fence
107
+ - handle braces within code fences in markdown properly by @pboling
108
+
109
+ [gh!683]: https://github.com/ruby-oauth/oauth2/pull/683
110
+ [gh!684]: https://github.com/ruby-oauth/oauth2/pull/684
111
+ [gh!685]: https://github.com/ruby-oauth/oauth2/pull/685
112
+ [gh!686]: https://github.com/ruby-oauth/oauth2/pull/686
113
+ [gh!687]: https://github.com/ruby-oauth/oauth2/pull/687
114
+ [gh!690]: https://github.com/ruby-oauth/oauth2/pull/690
115
+ [gh!691]: https://github.com/ruby-oauth/oauth2/pull/691
116
+ [gh!692]: https://github.com/ruby-oauth/oauth2/pull/692
117
+
118
+ ## [2.0.17] - 2025-09-15
119
+
120
+ - TAG: [v2.0.17][2.0.17t]
121
+ - COVERAGE: 100.00% -- 526/526 lines in 14 files
122
+ - BRANCH COVERAGE: 100.00% -- 178/178 branches in 14 files
123
+ - 90.48% documented
124
+
125
+ ### Added
7
126
 
8
- - [#541](https://github.com/oauth-xx/oauth2/pull/541) - Backport fix to expires_at handling [#533](https://github.com/oauth-xx/oauth2/pull/533) to 1-4-stable branch. (@dobon)
127
+ - [gh!682][gh!682] - AccessToken: support Hash-based verb-dependent token transmission mode (e.g., `{get: :query, post: :header}`)
9
128
 
10
- ## [1.4.6] - 2021-03-18
129
+ [gh!682]: https://github.com/ruby-oauth/oauth2/pull/682
11
130
 
12
- - [#540](https://github.com/oauth-xx/oauth2/pull/540) - Add VERSION constant (@pboling)
13
- - [#537](https://github.com/oauth-xx/oauth2/pull/537) - Fix crash in OAuth2::Client#get_token (@anderscarling)
14
- - [#538](https://github.com/oauth-xx/oauth2/pull/538) - Remove reliance on globally included OAuth2 in tests for version 1.4 (@anderscarling)
131
+ ## [2.0.16] - 2025-09-14
132
+
133
+ - TAG: [v2.0.16][2.0.16t]
134
+ - COVERAGE: 100.00% -- 520/520 lines in 14 files
135
+ - BRANCH COVERAGE: 100.00% -- 176/176 branches in 14 files
136
+ - 90.48% documented
137
+
138
+ ### Added
139
+
140
+ - [gh!680][gh!680] - E2E example using mock test server added in v2.0.11 by @pboling
141
+ - mock-oauth2-server upgraded to v2.3.0
142
+ - https://github.com/navikt/mock-oauth2-server
143
+ - `docker compose -f docker-compose-ssl.yml up -d --wait`
144
+ - `ruby examples/e2e.rb`
145
+ - `docker compose -f docker-compose-ssl.yml down`
146
+ - mock server readiness wait is 90s
147
+ - override via E2E_WAIT_TIMEOUT
148
+ - [gh!676][gh!676], [gh!679][gh!679] - Apache SkyWalking Eyes dependency license check by @pboling
149
+
150
+ ### Changed
151
+
152
+ - [gh!678][gh!678] - Many improvements to make CI more resilient (past/future proof) by @pboling
153
+ - [gh!681][gh!681] - Upgrade to kettle-dev v1.1.19
154
+
155
+ [gh!676]: https://github.com/ruby-oauth/oauth2/pull/676
156
+ [gh!678]: https://github.com/ruby-oauth/oauth2/pull/678
157
+ [gh!679]: https://github.com/ruby-oauth/oauth2/pull/679
158
+ [gh!680]: https://github.com/ruby-oauth/oauth2/pull/680
159
+ [gh!681]: https://github.com/ruby-oauth/oauth2/pull/681
160
+
161
+ ## [2.0.15] - 2025-09-08
162
+
163
+ - TAG: [v2.0.15][2.0.15t]
164
+ - COVERAGE: 100.00% -- 519/519 lines in 14 files
165
+ - BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files
166
+ - 90.48% documented
167
+
168
+ ### Added
169
+
170
+ - [gh!671][gh!671] - Complete documentation example for Instagram by @pboling
171
+ - .env.local.example for contributor happiness
172
+ - note lack of builds for JRuby 9.2, 9.3 & Truffleruby 22.3, 23.0
173
+ - [actions/runner - issues/2347][GHA-continue-on-error-ui]
174
+ - [community/discussions/15452][GHA-allow-failure]
175
+ - [gh!670][gh!670] - AccessToken: verb-dependent token transmission mode by @mrj
176
+ - e.g., Instagram GET=:query, POST/DELETE=:header
177
+
178
+ ### Changed
179
+
180
+ - [gh!669][gh!669] - Upgrade to kettle-dev v1.1.9 by @pboling
181
+
182
+ ### Fixed
183
+
184
+ - Remove accidentally duplicated lines, and fix typos in CHANGELOG.md
185
+ - point badge to the correct workflow for Ruby 2.3 (caboose.yml)
186
+
187
+ [gh!669]: https://github.com/ruby-oauth/oauth2/pull/669
188
+ [gh!670]: https://github.com/ruby-oauth/oauth2/pull/670
189
+ [gh!671]: https://github.com/ruby-oauth/oauth2/pull/671
190
+ [GHA-continue-on-error-ui]: https://github.com/actions/runner/issues/2347
191
+ [GHA-allow-failure]: https://github.com/orgs/community/discussions/15452
192
+
193
+ ## [2.0.14] - 2025-08-31
194
+
195
+ - TAG: [v2.0.14][2.0.14t]
196
+ - COVERAGE: 100.00% -- 519/519 lines in 14 files
197
+ - BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files
198
+ - 90.48% documented
199
+
200
+ ### Added
201
+
202
+ - improved documentation by @pboling
203
+ - [gh!665][gh!665] - Document Mutual TLS (mTLS) usage with example in README (connection_opts.ssl client_cert/client_key and auth_scheme: :tls_client_auth) by @pboling
204
+ - [gh!666][gh!666] - Document usage of flat query params using Faraday::FlatParamsEncoder, with example URI, in README by @pboling
205
+ - Spec: verify flat params are preserved with Faraday::FlatParamsEncoder (skips on Faraday without FlatParamsEncoder)
206
+ - [gh!662][gh!662] - documentation notes in code comments and README highlighting OAuth 2.1 differences, with references, by @pboling
207
+ - PKCE required for auth code,
208
+ - exact redirect URI match,
209
+ - implicit/password grants omitted,
210
+ - avoid bearer tokens in query,
211
+ - refresh token guidance for public clients,
212
+ - simplified client definitions
213
+ - [gh!663][gh!663] - document how to implement an OIDC client with this gem in OIDC.md by @pboling
214
+ - also, list libraries built on top of the oauth2 gem that implement OIDC
215
+ - [gh!664][gh!664] - README: Add example for JHipster UAA (Spring Cloud) password grant, converted from Postman/Net::HTTP by @pboling
216
+
217
+ [gh!662]: https://github.com/ruby-oauth/oauth2/pull/662
218
+ [gh!663]: https://github.com/ruby-oauth/oauth2/pull/663
219
+ [gh!664]: https://github.com/ruby-oauth/oauth2/pull/664
220
+ [gh!665]: https://github.com/ruby-oauth/oauth2/pull/665
221
+ [gh!666]: https://github.com/ruby-oauth/oauth2/pull/666
222
+
223
+ ## [2.0.13] - 2025-08-30
224
+
225
+ - TAG: [v2.0.13][2.0.13t]
226
+ - COVERAGE: 100.00% -- 519/519 lines in 14 files
227
+ - BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files
228
+ - 90.48% documented
229
+
230
+ ### Added
231
+
232
+ - [gh!656][gh!656] - Support revocation with URL-encoded parameters
233
+ - [gh!660][gh!660] - Inline yard documentation by @pboling
234
+ - [gh!660][gh!660] - Complete RBS types documentation by @pboling
235
+ - [gh!660][gh!660]- (more) Comprehensive documentation / examples by @pboling
236
+ - [gh!657][gh!657] - Updated documentation for org-rename by @pboling
237
+ - More funding links by @Aboling0
238
+ - Documentation: Added docs/OIDC.md with OIDC 1.0 overview, example, and references
239
+
240
+ ### Changed
241
+
242
+ - Upgrade Code of Conduct to Contributor Covenant 2.1 by @pboling
243
+ - [gh!660][gh!660] - Shrink post-install message by 4 lines by @pboling
244
+
245
+ ### Fixed
246
+
247
+ - [gh!660][gh!660] - Links in README (including link to HEAD documentation) by @pboling
248
+
249
+ [gh!660]: https://github.com/ruby-oauth/oauth2/pull/660
250
+ [gh!657]: https://github.com/ruby-oauth/oauth2/pull/657
251
+ [gh!656]: https://github.com/ruby-oauth/oauth2/pull/656
252
+
253
+ ## [2.0.12] - 2025-05-31
254
+
255
+ - TAG: [v2.0.12][2.0.12t]
256
+ - Line Coverage: 100.0% (520 / 520)
257
+ - Branch Coverage: 100.0% (174 / 174)
258
+ - 80.00% documented
259
+
260
+ ### Added
261
+
262
+ - [gh!652][gh!652] - Support IETF rfc7515 JSON Web Signature - JWS by @mridang
263
+ - Support JWT `kid` for key discovery and management
264
+ - More Documentation by @pboling
265
+ - Documented Serialization Extensions
266
+ - Added Gatzo.com FLOSS logo by @Aboling0, CC BY-SA 4.0
267
+ - Documentation site @ https://oauth2.galtzo.com now complete
268
+
269
+ ### Changed
270
+
271
+ - Updates to gemspec (email, funding url, post install message)
272
+
273
+ ### Fixed
274
+
275
+ - Documentation Typos by @pboling
276
+
277
+ [gh!652]: https://github.com/ruby-oauth/oauth2/pull/652
278
+
279
+ ## [2.0.11] - 2025-05-23
280
+
281
+ - TAG: [v2.0.11][2.0.11t]
282
+ - COVERAGE: 100.00% -- 518/518 lines in 14 files
283
+ - BRANCH COVERAGE: 100.00% -- 172/172 branches in 14 files
284
+ - 80.00% documented
285
+
286
+ ### Added
287
+
288
+ - [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - `:snaky_hash_klass` option (@pboling)
289
+ - More documentation
290
+ - Codeberg as ethical mirror (@pboling)
291
+ - https://codeberg.org/ruby-oauth/oauth2
292
+ - Don't check for cert if SKIP_GEM_SIGNING is set (@pboling)
293
+ - All runtime deps, including oauth-xx sibling gems, are now tested against HEAD (@pboling)
294
+ - All runtime deps, including ruby-oauth sibling gems, are now tested against HEAD (@pboling)
295
+ - YARD config, GFM compatible with relative file links (@pboling)
296
+ - Documentation site on GitHub Pages (@pboling)
297
+ - [oauth2.galtzo.com](https://oauth2.galtzo.com)
298
+ - [!649](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/649) - Test compatibility with all key minor versions of Hashie v0, v1, v2, v3, v4, v5, HEAD (@pboling)
299
+ - [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - Mock OAuth2 server for testing (@pboling)
300
+ - https://github.com/navikt/mock-oauth2-server
301
+
302
+ ### Changed
303
+
304
+ - [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - Upgraded to snaky_hash v2.0.3 (@pboling)
305
+ - Provides solution for serialization issues
306
+ - Updated `spec.homepage_uri` in gemspec to GitHub Pages YARD documentation site (@pboling)
307
+
308
+ ### Fixed
309
+
310
+ - [gh!650](https://github.com/ruby-oauth/oauth2/pull/650) - Regression in return type of `OAuth2::Response#parsed` (@pboling)
311
+ - Incorrect documentation related to silencing warnings (@pboling)
312
+
313
+ ## [2.0.10] - 2025-05-17
314
+
315
+ - TAG: [v2.0.10][2.0.10t]
316
+ - COVERAGE: 100.00% -- 518/518 lines in 14 files
317
+ - BRANCH COVERAGE: 100.00% -- 170/170 branches in 14 files
318
+ - 79.05% documented
319
+
320
+ ### Added
321
+
322
+ - [gh!632](https://github.com/ruby-oauth/oauth2/pull/632) - Added `funding.yml` (@Aboling0)
323
+ - [!635](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/635) - Added `.gitlab-ci.yml` (@jessieay)
324
+ - [#638](https://gitlab.com/ruby-oauth/oauth2/-/issues/638) - Documentation of support for **ILO Fundamental Principles of Rights at Work** (@pboling)
325
+ - [!642](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/642) - 20-year certificate for signing gem releases, expires 2045-04-29 (@pboling)
326
+ - Gemspec metadata
327
+ - funding_uri
328
+ - news_uri
329
+ - mailing_list_uri
330
+ - SHA256 and SHA512 Checksums for release
331
+ - [!643](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/643) - Add `token_name` option (@pboling)
332
+ - Specify the parameter name that identifies the access token
333
+ - [!645](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/645) - Add `OAuth2::OAUTH_DEBUG` constant, based on `ENV["OAUTH_DEBUG"] (@pboling)
334
+ - [!646](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/646) - Add `OAuth2.config.silence_extra_tokens_warning`, default: false (@pboling)
335
+ - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - Add IETF RFC 7009 Token Revocation compliant (@pboling)
336
+ - `OAuth2::Client#revoke_token`
337
+ - `OAuth2::AccessToken#revoke`
338
+ - See: https://datatracker.ietf.org/doc/html/rfc7009
339
+ - [gh!644](https://github.com/ruby-oauth/oauth2/pull/644), [gh!645](https://github.com/ruby-oauth/oauth2/pull/645) - Added CITATION.cff (@Aboling0)
340
+ - [!648](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/648) - Improved documentation (@pboling)
341
+
342
+ ### Changed
343
+
344
+ - Default value of `OAuth2.config.silence_extra_tokens_warning` was `false`, now `true` (@pboling)
345
+ - Gem releases are now cryptographically signed, with a 20-year cert (@pboling)
346
+ - Allow linux distros to build release without signing, as their package managers sign independently
347
+ - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - `OAuth2::AccessToken#refresh` now supports block param pass through (@pboling)
348
+ - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - `OAuth2.config` is no longer writable (@pboling)
349
+ - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - Errors raised by `OAuth2::AccessToken` are now always `OAuth2::Error` and have better metadata (@pboling)
350
+
351
+ ### Fixed
352
+
353
+ - [#95](https://gitlab.com/ruby-oauth/oauth2/-/issues/95) - restoring an access token via `AccessToken#from_hash` (@pboling)
354
+ - This was a 13 year old bug report. 😘
355
+ - [#619](https://gitlab.com/ruby-oauth/oauth2/-/issues/619) - Internal options (like `snaky`, `raise_errors`, and `parse`) are no longer included in request (@pboling)
356
+ - [!633](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/633) - Spaces will now be encoded as `%20` instead of `+` (@nov.matake)
357
+ - [!634](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/634) - `CHANGELOG.md` documentation fix (@skuwa229)
358
+ - [!638](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/638) - fix `expired?` when `expires_in` is `0` (@disep)
359
+ - [!639](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/639) - Only instantiate `OAuth2::Error` if `raise_errors` option is `true` (@glytch2)
360
+ - [#639](https://gitlab.com/ruby-oauth/oauth2/-/issues/639) - `AccessToken#to_hash` is now serializable, just a regular Hash (@pboling)
361
+ - [!640](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/640) - `README.md` documentation fix (@martinezcoder)
362
+ - [!641](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/641) - Do not include sensitive information in the `inspect` (@manuelvanrijn)
363
+ - [#641](https://gitlab.com/ruby-oauth/oauth2/-/issues/641) - Made default JSON response parser more resilient (@pboling)
364
+ - [#645](https://gitlab.com/ruby-oauth/oauth2/-/issues/645) - Response no longer becomes a snaky hash (@pboling)
365
+ - [gh!646](https://github.com/ruby-oauth/oauth2/pull/646) - Change `require` to `require_relative` (improve performance) (@Aboling0)
366
+
367
+ ## [2.0.9] - 2022-09-16
368
+
369
+ - TAG: [v2.0.9][2.0.9t]
370
+
371
+ ### Added
372
+
373
+ - More specs (@pboling)
374
+
375
+ ### Changed
376
+
377
+ - Complete migration to main branch as default (@pboling)
378
+ - Complete migration to Gitlab, updating all links, and references in VCS-managed files (@pboling)
379
+
380
+ ## [2.0.8] - 2022-09-01
381
+
382
+ - TAG: [v2.0.8][2.0.8t]
383
+
384
+ ### Changed
385
+
386
+ - [!630](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/630) - Extract snaky_hash to external dependency (@pboling)
387
+
388
+ ### Added
389
+
390
+ - [!631](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/631) - New global configuration option OAuth2.config.silence_extra_tokens_warning (default: false) fixes [#628](https://gitlab.com/ruby-oauth/oauth2/-/issues/628)
391
+
392
+ ## [2.0.7] - 2022-08-22
393
+
394
+ - TAG: [v2.0.7][2.0.7t]
395
+
396
+ ### Added
397
+
398
+ - [!629](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/629) - Allow POST of JSON to get token (@pboling, @terracatta)
399
+
400
+ ### Fixed
401
+
402
+ - [!626](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/626) - Fixes a regression in 2.0.6. Will now prefer the key order from the lookup, not the hash keys (@rickselby)
403
+ - Note: This fixes compatibility with `omniauth-oauth2` and AWS
404
+ - [!625](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/625) - Fixes the printed version in the post install message (@hasghari)
405
+
406
+ ## [2.0.6] - 2022-07-13
407
+
408
+ - TAG: [v2.0.6][2.0.6t]
409
+
410
+ ### Fixed
411
+
412
+ - [!624](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/624) - Fixes a [regression](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/623) in v2.0.5, where an error would be raised in refresh_token flows due to (legitimate) lack of access_token (@pboling)
413
+
414
+ ## [2.0.5] - 2022-07-07
415
+
416
+ - TAG: [v2.0.5][2.0.5t]
417
+
418
+ ### Fixed
419
+
420
+ - [!620](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/620) - Documentation improvements, to help with upgrading (@swanson)
421
+ - [!621](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/621) - Fixed [#528](https://gitlab.com/ruby-oauth/oauth2/-/issues/528) and [#619](https://gitlab.com/ruby-oauth/oauth2/-/issues/619) (@pboling)
422
+ - All data in responses is now returned, with the access token removed and set as `token`
423
+ - `refresh_token` is no longer dropped
424
+ - **BREAKING**: Microsoft's `id_token` is no longer left as `access_token['id_token']`, but moved to the standard `access_token.token` that all other strategies use
425
+ - Remove `parse` and `snaky` from options so they don't get included in response
426
+ - There is now 100% test coverage, for lines _and_ branches, and it will stay that way.
427
+
428
+ ## [2.0.4] - 2022-07-01
429
+
430
+ - TAG: [v2.0.4][2.0.4t]
431
+
432
+ ### Fixed
433
+
434
+ - [!618](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/618) - In some scenarios the `snaky` option default value was not applied (@pboling)
435
+
436
+ ## [2.0.3] - 2022-06-28
437
+
438
+ - TAG: [v2.0.3][2.0.3t]
439
+
440
+ ### Added
441
+
442
+ - [!611](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/611) - Proper deprecation warnings for `extract_access_token` argument (@pboling)
443
+ - [!612](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/612) - Add `snaky: false` option to skip conversion to `OAuth2::SnakyHash` (default: true) (@pboling)
444
+
445
+ ### Fixed
446
+
447
+ - [!608](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/608) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@nbibler)
448
+ - [!615](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/615) - Fix support for requests with blocks, see `Faraday::Connection#run_request` (@pboling)
449
+
450
+ ## [2.0.2] - 2022-06-24
451
+
452
+ - TAG: [v2.0.2][2.0.2t]
453
+
454
+ ### Fixed
455
+
456
+ - [!604](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/604) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@stanhu)
457
+ - [!606](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/606) - Ruby 2.7 deprecation warning fix: Move `access_token_class` parameter into `Client` constructor (@stanhu)
458
+ - [!607](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/607) - CHANGELOG correction, reference to `OAuth2::ConnectionError` (@zavan)
459
+
460
+ ## [2.0.1] - 2022-06-22
461
+
462
+ - TAG: [v2.0.1][2.0.1t]
463
+
464
+ ### Added
465
+
466
+ - Documentation improvements (@pboling)
467
+ - Increased test coverage to 99% (@pboling)
468
+
469
+ ## [2.0.0] - 2022-06-21
470
+
471
+ - TAG: [v2.0.0][2.0.0t]
472
+
473
+ ### Added
474
+
475
+ - [!158](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/158), [!344](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/344) - Optionally pass raw response to parsers (@niels)
476
+ - [!190](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/190), [!332](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/332), [!334](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/334), [!335](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/335), [!360](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/360), [!426](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/426), [!427](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/427), [!461](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/461) - Documentation (@josephpage, @pboling, @meganemura, @joshRpowell, @elliotcm)
477
+ - [!220](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/220) - Support IETF rfc7523 JWT Bearer Tokens Draft 04+ (@jhmoore)
478
+ - [!298](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/298) - Set the response object on the access token on Client#get_token for debugging (@cpetschnig)
479
+ - [!305](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/305) - Option: `OAuth2::Client#get_token` - `:access_token_class` (`AccessToken`); user specified class to use for all calls to `get_token` (@styd)
480
+ - [!346](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/571) - Modern gem structure (@pboling)
481
+ - [!351](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/351) - Support Jruby 9k (@pboling)
482
+ - [!362](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/362) - Support SemVer release version scheme (@pboling)
483
+ - [!363](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/363) - New method `OAuth2::AccessToken#refresh!` same as old `refresh`, with backwards compatibility alias (@pboling)
484
+ - [!364](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/364) - Support `application/hal+json` format (@pboling)
485
+ - [!365](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/365) - Support `application/vnd.collection+json` format (@pboling)
486
+ - [!376](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/376) - _Documentation_: Example / Test for Google 2-legged JWT (@jhmoore)
487
+ - [!381](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/381) - Spec for extra header params on client credentials (@nikz)
488
+ - [!394](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/394) - Option: `OAuth2::AccessToken#initialize` - `:expires_latency` (`nil`); number of seconds by which AccessToken validity will be reduced to offset latency (@klippx)
489
+ - [!412](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/412) - Support `application/vdn.api+json` format (from jsonapi.org) (@david-christensen)
490
+ - [!413](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/413) - _Documentation_: License scan and report (@meganemura)
491
+ - [!442](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/442) - Option: `OAuth2::Client#initialize` - `:logger` (`::Logger.new($stdout)`) logger to use when OAUTH_DEBUG is enabled (for parity with `1-4-stable` branch) (@rthbound)
492
+ - [!494](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/494) - Support [OIDC 1.0 Private Key JWT](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication); based on the OAuth JWT assertion specification [(RFC 7523)](https://tools.ietf.org/html/rfc7523) (@SteveyblamWork)
493
+ - [!549](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/549) - Wrap `Faraday::ConnectionFailed` in `OAuth2::ConnectionError` (@nikkypx)
494
+ - [!550](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/550) - Raise error if location header not present when redirecting (@stanhu)
495
+ - [!552](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/552) - Add missing `version.rb` require (@ahorek)
496
+ - [!553](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/553) - Support `application/problem+json` format (@janz93)
497
+ - [!560](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/560) - Support IETF rfc6749, section 2.3.1 - don't set auth params when `nil` (@bouk)
498
+ - [!571](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/571) - Support Ruby 3.1 (@pboling)
499
+ - [!575](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/575) - Support IETF rfc7231, section 7.1.2 - relative location in redirect (@pboling)
500
+ - [!581](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/581) - _Documentation_: of breaking changes (@pboling)
501
+
502
+ ### Changed
503
+
504
+ - [!191](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/191) - **BREAKING**: Token is expired if `expired_at` time is `now` (@davestevens)
505
+ - [!312](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/312) - **BREAKING**: Set `:basic_auth` as default for `:auth_scheme` instead of `:request_body`. This was default behavior before 1.3.0. (@tetsuya, @wy193777)
506
+ - [!317](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/317) - _Dependency_: Upgrade `jwt` to 2.x.x (@travisofthenorth)
507
+ - [!338](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/338) - _Dependency_: Switch from `Rack::Utils.escape` to `CGI.escape` (@josephpage)
508
+ - [!339](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/339), [!368](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/368), [!424](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/424), [!479](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/479), [!493](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/493), [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539), [!542](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/542), [!553](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/553) - CI Updates, code coverage, linting, spelling, type fixes, New VERSION constant (@pboling, @josephpage, @ahorek)
509
+ - [!410](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/410) - **BREAKING**: Removed the ability to call .error from an OAuth2::Response object (@jhmoore)
510
+ - [!414](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/414) - Use Base64.strict_encode64 instead of custom internal logic (@meganemura)
511
+ - [!469](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/469) - **BREAKING**: Default value for option `OAuth2::Client` - `:authorize_url` removed leading slash to work with relative paths by default (`'oauth/authorize'`) (@ghost)
512
+ - [!469](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/469) - **BREAKING**: Default value for option `OAuth2::Client` - `:token_url` removed leading slash to work with relative paths by default (`'oauth/token'`) (@ghost)
513
+ - [!507](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/507), [!575](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/575) - **BREAKING**: Transform keys to snake case, always, by default (ultimately via `rash_alt` gem)
514
+ - Original keys will still work as previously, in most scenarios, thanks to `rash_alt` gem.
515
+ - However, this is a _breaking_ change if you rely on `response.parsed.to_h`, as the keys in the result will be snake case.
516
+ - As of version 2.0.4 you can turn key transformation off with the `snaky: false` option.
517
+ - [!576](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/576) - **BREAKING**: Stop rescuing parsing errors (@pboling)
518
+ - [!591](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/576) - _DEPRECATION_: `OAuth2::Client` - `:extract_access_token` option is deprecated
519
+
520
+ ### Fixed
521
+
522
+ - [!158](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/158), [!344](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/344) - Handling of errors when using `omniauth-facebook` (@niels)
523
+ - [!294](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/294) - Fix: "Unexpected middleware set" issue with Faraday when `OAUTH_DEBUG=true` (@spectator, @gafrom)
524
+ - [!300](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/300) - _Documentation_: `Oauth2::Error` - Error codes are strings, not symbols (@NobodysNightmare)
525
+ - [!318](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/318), [!326](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/326), [!343](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/343), [!347](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/347), [!397](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/397), [!464](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/464), [!561](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/561), [!565](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/565) - _Dependency_: Support all versions of `faraday` (see [gemfiles/README.md][gemfiles/readme] for compatibility matrix with Ruby engines & versions) (@pboling, @raimondasv, @zacharywelch, @Fudoshiki, @ryogift, @sj26, @jdelStrother)
526
+ - [!322](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/322), [!331](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/331), [!337](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/337), [!361](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/361), [!371](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/371), [!377](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/377), [!383](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/383), [!392](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/392), [!395](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/395), [!400](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/400), [!401](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/401), [!403](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/403), [!415](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/415), [!567](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/567) - Updated Rubocop, Rubocop plugins and improved code style (@pboling, @bquorning, @lautis, @spectator)
527
+ - [!328](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/328) - _Documentation_: Homepage URL is SSL (@amatsuda)
528
+ - [!339](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/339), [!479](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/479) - Update testing infrastructure for all supported Rubies (@pboling and @josephpage)
529
+ - [!366](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/366) - **Security**: Fix logging to `$stdout` of request and response bodies via Faraday's logger and `ENV["OAUTH_DEBUG"] == 'true'` (@pboling)
530
+ - [!380](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/380) - Fix: Stop attempting to encode non-encodable objects in `Oauth2::Error` (@jhmoore)
531
+ - [!399](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/399) - Fix: Stop duplicating `redirect_uri` in `get_token` (@markus)
532
+ - [!410](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/410) - Fix: `SystemStackError` caused by circular reference between Error and Response classes (@jhmoore)
533
+ - [!460](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/460) - Fix: Stop throwing errors when `raise_errors` is set to `false`; analog of [!524](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/524) for `1-4-stable` branch (@joaolrpaulo)
534
+ - [!472](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/472) - **Security**: Add checks to enforce `client_secret` is *never* passed in authorize_url query params for `implicit` and `auth_code` grant types (@dfockler)
535
+ - [!482](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/482) - _Documentation_: Update last of `intridea` links to `ruby-oauth` (@pboling)
536
+ - [!536](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/536) - **Security**: Compatibility with more (and recent) Ruby OpenSSL versions, Github Actions, Rubocop updated, analogous to [!535](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/535) on `1-4-stable` branch (@pboling)
537
+ - [!595](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/595) - Graceful handling of empty responses from `Client#get_token`, respecting `:raise_errors` config (@stanhu)
538
+ - [!596](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/596) - Consistency between `AccessToken#refresh` and `Client#get_token` named arguments (@stanhu)
539
+ - [!598](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/598) - Fix unparseable data not raised as error in `Client#get_token`, respecting `:raise_errors` config (@stanhu)
540
+
541
+ ### Removed
542
+
543
+ - [!341](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/341) - Remove Rdoc & Jeweler related files (@josephpage)
544
+ - [!342](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/342) - **BREAKING**: Dropped support for Ruby 1.8 (@josephpage)
545
+ - [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539) - Remove reliance on globally included OAuth2 in tests, analog of [!538](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/538) for 1-4-stable (@anderscarling)
546
+ - [!566](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/566) - _Dependency_: Removed `wwtd` (@bquorning)
547
+ - [!589](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/589), [!593](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/593) - Remove support for expired MAC token draft spec (@stanhu)
548
+ - [!590](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/590) - _Dependency_: Removed `multi_json` (@stanhu)
549
+
550
+ ## [1.4.11] - 2022-09-16
551
+
552
+ - TAG: [v1.4.11][1.4.11t]
553
+ - Complete migration to main branch as default (@pboling)
554
+ - Complete migration to Gitlab, updating all links, and references in VCS-managed files (@pboling)
555
+
556
+ ## [1.4.10] - 2022-07-01
557
+
558
+ - TAG: [v1.4.10][1.4.10t]
559
+ - FIPS Compatibility [!587](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/587) (@akostadinov)
560
+
561
+ ## [1.4.9] - 2022-02-20
562
+
563
+ - TAG: [v1.4.9][1.4.9t]
564
+ - Fixes compatibility with Faraday v2 [572](https://gitlab.com/ruby-oauth/oauth2/-/issues/572)
565
+ - Includes supported versions of Faraday in test matrix:
566
+ - Faraday ~> 2.2.0 with Ruby >= 2.6
567
+ - Faraday ~> 1.10 with Ruby >= 2.4
568
+ - Faraday ~> 0.17.3 with Ruby >= 1.9
569
+ - Add Windows and MacOS to test matrix
570
+
571
+ ## [1.4.8] - 2022-02-18
572
+
573
+ - TAG: [v1.4.8][1.4.8t]
574
+ - MFA is now required to push new gem versions (@pboling)
575
+ - README overhaul w/ new Ruby Version and Engine compatibility policies (@pboling)
576
+ - [!569](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/569) Backport fixes ([!561](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/561) by @ryogift), and add more fixes, to allow faraday 1.x and 2.x (@jrochkind)
577
+ - Improve Code Coverage tracking (Coveralls, CodeCov, CodeClimate), and enable branch coverage (@pboling)
578
+ - Add CodeQL, Security Policy, Funding info (@pboling)
579
+ - Added Ruby 3.1, jruby, jruby-head, truffleruby, truffleruby-head to build matrix (@pboling)
580
+ - [!543](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/543) - Support for more modern Open SSL libraries (@pboling)
581
+
582
+ ## [1.4.7] - 2021-03-19
583
+
584
+ - TAG: [v1.4.7][1.4.7t]
585
+ - [!541](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/541) - Backport fix to expires_at handling [!533](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/533) to 1-4-stable branch. (@dobon)
586
+
587
+ ## [1.4.6] - 2021-03-19
588
+
589
+ - TAG: [v1.4.6][1.4.6t]
590
+ - [!540](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/540) - Add VERSION constant (@pboling)
591
+ - [!537](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/537) - Fix crash in OAuth2::Client#get_token (@anderscarling)
592
+ - [!538](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/538) - Remove reliance on globally included OAuth2 in tests, analogous to [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539) on main branch (@anderscarling)
15
593
 
16
594
  ## [1.4.5] - 2021-03-18
17
595
 
18
- - [#535](https://github.com/oauth-xx/oauth2/pull/535) - Compatibility with range of supported Ruby OpenSSL versions, Rubocop updates, Github Actions (@pboling)
19
- - [#518](https://github.com/oauth-xx/oauth2/pull/518) - Add extract_access_token option to OAuth2::Client (@jonspalmer)
596
+ - TAG: [v1.4.5][1.4.5t]
597
+ - [!535](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/535) - Compatibility with range of supported Ruby OpenSSL versions, Rubocop updates, Github Actions, analogous to [!536](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/536) on main branch (@pboling)
598
+ - [!518](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/518) - Add extract_access_token option to OAuth2::Client (@jonspalmer)
599
+ - [!507](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/507) - Fix camel case content type, response keys (@anvox)
600
+ - [!500](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/500) - Fix YARD documentation formatting (@olleolleolle)
20
601
 
21
602
  ## [1.4.4] - 2020-02-12
22
603
 
23
- - [#408](https://github.com/oauth-xx/oauth2/pull/408) - Fixed expires_at for formatted time (@Lomey)
604
+ - TAG: [v1.4.4][1.4.4t]
605
+ - [!408](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/408) - Fixed expires_at for formatted time (@Lomey)
24
606
 
25
607
  ## [1.4.3] - 2020-01-29
26
608
 
27
- - [#483](https://github.com/oauth-xx/oauth2/pull/483) - add project metadata to gemspec (@orien)
28
- - [#495](https://github.com/oauth-xx/oauth2/pull/495) - support additional types of access token requests (@SteveyblamFreeagent, @thomcorley, @dgholz)
29
- - Adds support for private_key_jwt and tls_client_auth
30
- - [#433](https://github.com/oauth-xx/oauth2/pull/433) - allow field names with square brackets and numbers in params (@asm256)
609
+ - TAG: [v1.4.3][1.4.3t]
610
+ - [!483](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/483) - add project metadata to gemspec (@orien)
611
+ - [!495](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/495) - support additional types of access token requests (@SteveyblamFreeagent, @thomcorley, @dgholz)
612
+ - Adds support for private_key_jwt and tls_client_auth
613
+ - [!433](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/433) - allow field names with square brackets and numbers in params (@asm256)
31
614
 
32
615
  ## [1.4.2] - 2019-10-01
33
616
 
34
- - [#478](https://github.com/oauth-xx/oauth2/pull/478) - support latest version of faraday & fix build (@pboling)
35
- - officially support Ruby 2.6 and truffleruby
617
+ - TAG: [v1.4.2][1.4.2t]
618
+ - [!478](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/478) - support latest version of faraday & fix build (@pboling)
619
+ - Officially support Ruby 2.6 and truffleruby
36
620
 
37
621
  ## [1.4.1] - 2018-10-13
38
622
 
39
- - [#417](https://github.com/oauth-xx/oauth2/pull/417) - update jwt dependency (@thewoolleyman)
40
- - [#419](https://github.com/oauth-xx/oauth2/pull/419) - remove rubocop dependency (temporary, added back in [#423](https://github.com/oauth-xx/oauth2/pull/423)) (@pboling)
41
- - [#418](https://github.com/oauth-xx/oauth2/pull/418) - update faraday dependency (@pboling)
42
- - [#420](https://github.com/oauth-xx/oauth2/pull/420) - update [oauth2.gemspec](https://github.com/oauth-xx/oauth2/blob/1-4-stable/oauth2.gemspec) (@pboling)
43
- - [#421](https://github.com/oauth-xx/oauth2/pull/421) - fix [CHANGELOG.md](https://github.com/oauth-xx/oauth2/blob/1-4-stable/CHANGELOG.md) for previous releases (@pboling)
44
- - [#422](https://github.com/oauth-xx/oauth2/pull/422) - update [LICENSE](https://github.com/oauth-xx/oauth2/blob/1-4-stable/LICENSE) and [README.md](https://github.com/oauth-xx/oauth2/blob/1-4-stable/README.md) (@pboling)
45
- - [#423](https://github.com/oauth-xx/oauth2/pull/423) - update [builds](https://travis-ci.org/oauth-xx/oauth2/builds), [Rakefile](https://github.com/oauth-xx/oauth2/blob/1-4-stable/Rakefile) (@pboling)
46
- - officially document supported Rubies
47
- * Ruby 1.9.3
48
- * Ruby 2.0.0
49
- * Ruby 2.1
50
- * Ruby 2.2
51
- * [JRuby 1.7][jruby-1.7] (targets MRI v1.9)
52
- * [JRuby 9.0][jruby-9.0] (targets MRI v2.0)
53
- * Ruby 2.3
54
- * Ruby 2.4
55
- * Ruby 2.5
56
- * [JRuby 9.1][jruby-9.1] (targets MRI v2.3)
57
- * [JRuby 9.2][jruby-9.2] (targets MRI v2.5)
623
+ - TAG: [v1.4.1][1.4.1t]
624
+ - [!417](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/417) - update jwt dependency (@thewoolleyman)
625
+ - [!419](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/419) - remove rubocop dependency (temporary, added back in [!423](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/423)) (@pboling)
626
+ - [!418](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/418) - update faraday dependency (@pboling)
627
+ - [!420](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/420) - update [oauth2.gemspec](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/oauth2.gemspec) (@pboling)
628
+ - [!421](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/421) - fix [CHANGELOG.md](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/CHANGELOG.md) for previous releases (@pboling)
629
+ - [!422](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/422) - update [LICENSE](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/LICENSE) and [README.md](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/README.md) (@pboling)
630
+ - [!423](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/423) - update [builds](https://travis-ci.org/ruby-oauth/oauth2/builds), [Rakefile](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/Rakefile) (@pboling)
631
+ - officially document supported Rubies
632
+ * Ruby 1.9.3
633
+ * Ruby 2.0.0
634
+ * Ruby 2.1
635
+ * Ruby 2.2
636
+ * [JRuby 1.7][jruby-1.7] (targets MRI v1.9)
637
+ * [JRuby 9.0][jruby-9.0] (targets MRI v2.0)
638
+ * Ruby 2.3
639
+ * Ruby 2.4
640
+ * Ruby 2.5
641
+ * [JRuby 9.1][jruby-9.1] (targets MRI v2.3)
642
+ * [JRuby 9.2][jruby-9.2] (targets MRI v2.5)
58
643
 
59
644
  [jruby-1.7]: https://www.jruby.org/2017/05/11/jruby-1-7-27.html
60
645
  [jruby-9.0]: https://www.jruby.org/2016/01/26/jruby-9-0-5-0.html
@@ -63,6 +648,7 @@ All notable changes to this project will be documented in this file.
63
648
 
64
649
  ## [1.4.0] - 2017-06-09
65
650
 
651
+ - TAG: [v1.4.0][1.4.0t]
66
652
  - Drop Ruby 1.8.7 support (@sferik)
67
653
  - Fix some RuboCop offenses (@sferik)
68
654
  - _Dependency_: Remove Yardstick (@sferik)
@@ -70,11 +656,13 @@ All notable changes to this project will be documented in this file.
70
656
 
71
657
  ## [1.3.1] - 2017-03-03
72
658
 
659
+ - TAG: [v1.3.1][1.3.1t]
73
660
  - Add support for Ruby 2.4.0 (@pschambacher)
74
661
  - _Dependency_: Upgrade Faraday to Faraday 0.11 (@mcfiredrill, @rhymes, @pschambacher)
75
662
 
76
663
  ## [1.3.0] - 2016-12-28
77
664
 
665
+ - TAG: [v1.3.0][1.3.0t]
78
666
  - Add support for header-based authentication to the `Client` so it can be used across the library (@bjeanes)
79
667
  - Default to header-based authentication when getting a token from an authorisation code (@maletor)
80
668
  - **Breaking**: Allow an `auth_scheme` (`:basic_auth` or `:request_body`) to be set on the client, defaulting to `:request_body` to maintain backwards compatibility (@maletor, @bjeanes)
@@ -85,86 +673,233 @@ All notable changes to this project will be documented in this file.
85
673
 
86
674
  ## [1.2.0] - 2016-07-01
87
675
 
676
+ - TAG: [v1.2.0][1.2.0t]
88
677
  - Properly handle encoding of error responses (so we don't blow up, for example, when Google's response includes a ∞) (@Motoshi-Nishihira)
89
678
  - Make a copy of the options hash in `AccessToken#from_hash` to avoid accidental mutations (@Linuus)
90
679
  - Use `raise` rather than `fail` to throw exceptions (@sferik)
91
680
 
92
681
  ## [1.1.0] - 2016-01-30
93
682
 
683
+ - TAG: [v1.1.0][1.1.0t]
94
684
  - Various refactors (eliminating `Hash#merge!` usage in `AccessToken#refresh!`, use `yield` instead of `#call`, freezing mutable objects in constants, replacing constants with class variables) (@sferik)
95
685
  - Add support for Rack 2, and bump various other dependencies (@sferik)
96
686
 
97
687
  ## [1.0.0] - 2014-07-09
98
688
 
689
+ - TAG: [v1.0.0][1.0.0t]
690
+
99
691
  ### Added
692
+
100
693
  - Add an implementation of the MAC token spec.
101
694
 
102
695
  ### Fixed
696
+
103
697
  - Fix Base64.strict_encode64 incompatibility with Ruby 1.8.7.
104
698
 
105
699
  ## [0.5.0] - 2011-07-29
106
700
 
701
+ - TAG: [v0.5.0][0.5.0t]
702
+
107
703
  ### Changed
108
- - [breaking] `oauth_token` renamed to `oauth_bearer`.
109
- - [breaking] `authorize_path` Client option renamed to `authorize_url`.
110
- - [breaking] `access_token_path` Client option renamed to `token_url`.
111
- - [breaking] `access_token_method` Client option renamed to `token_method`.
112
- - [breaking] `web_server` renamed to `auth_code`.
704
+
705
+ - *breaking* `oauth_token` renamed to `oauth_bearer`.
706
+ - *breaking* `authorize_path` Client option renamed to `authorize_url`.
707
+ - *breaking* `access_token_path` Client option renamed to `token_url`.
708
+ - *breaking* `access_token_method` Client option renamed to `token_method`.
709
+ - *breaking* `web_server` renamed to `auth_code`.
113
710
 
114
711
  ## [0.4.1] - 2011-04-20
115
712
 
713
+ - TAG: [v0.4.1][0.4.1t]
714
+
116
715
  ## [0.4.0] - 2011-04-20
117
716
 
717
+ - TAG: [v0.4.0][0.4.0t]
718
+
118
719
  ## [0.3.0] - 2011-04-08
119
720
 
721
+ - TAG: [v0.3.0][0.3.0t]
722
+
120
723
  ## [0.2.0] - 2011-04-01
121
724
 
725
+ - TAG: [v0.2.0][0.2.0t]
726
+
122
727
  ## [0.1.1] - 2011-01-12
123
728
 
729
+ - TAG: [v0.1.1][0.1.1t]
730
+
124
731
  ## [0.1.0] - 2010-10-13
125
732
 
126
- ## [0.0.13] + [0.0.12] + [0.0.11] - 2010-08-17
733
+ - TAG: [v0.1.0][0.1.0t]
734
+
735
+ ## [0.0.13] - 2010-08-17
736
+
737
+ - TAG: [v0.0.13][0.0.13t]
738
+
739
+ ## [0.0.12] - 2010-08-17
740
+
741
+ - TAG: [v0.0.12][0.0.12t]
742
+
743
+ ## [0.0.11] - 2010-08-17
744
+
745
+ - TAG: [v0.0.11][0.0.11t]
127
746
 
128
747
  ## [0.0.10] - 2010-06-19
129
748
 
749
+ - TAG: [v0.0.10][0.0.10t]
750
+
130
751
  ## [0.0.9] - 2010-06-18
131
752
 
132
- ## [0.0.8] + [0.0.7] - 2010-04-27
753
+ - TAG: [v0.0.9][0.0.9t]
754
+
755
+ ## [0.0.8] - 2010-04-27
756
+
757
+ - TAG: [v0.0.8][0.0.8t]
758
+
759
+ ## [0.0.7] - 2010-04-27
760
+
761
+ - TAG: [v0.0.7][0.0.7t]
133
762
 
134
763
  ## [0.0.6] - 2010-04-25
135
764
 
765
+ - TAG: [v0.0.6][0.0.6t]
766
+
136
767
  ## [0.0.5] - 2010-04-23
137
768
 
138
- ## [0.0.4] + [0.0.3] + [0.0.2] + [0.0.1] - 2010-04-22
139
-
140
-
141
- [0.0.1]: https://github.com/oauth-xx/oauth2/compare/311d9f4...v0.0.1
142
- [0.0.2]: https://github.com/oauth-xx/oauth2/compare/v0.0.1...v0.0.2
143
- [0.0.3]: https://github.com/oauth-xx/oauth2/compare/v0.0.2...v0.0.3
144
- [0.0.4]: https://github.com/oauth-xx/oauth2/compare/v0.0.3...v0.0.4
145
- [0.0.5]: https://github.com/oauth-xx/oauth2/compare/v0.0.4...v0.0.5
146
- [0.0.6]: https://github.com/oauth-xx/oauth2/compare/v0.0.5...v0.0.6
147
- [0.0.7]: https://github.com/oauth-xx/oauth2/compare/v0.0.6...v0.0.7
148
- [0.0.8]: https://github.com/oauth-xx/oauth2/compare/v0.0.7...v0.0.8
149
- [0.0.9]: https://github.com/oauth-xx/oauth2/compare/v0.0.8...v0.0.9
150
- [0.0.10]: https://github.com/oauth-xx/oauth2/compare/v0.0.9...v0.0.10
151
- [0.0.11]: https://github.com/oauth-xx/oauth2/compare/v0.0.10...v0.0.11
152
- [0.0.12]: https://github.com/oauth-xx/oauth2/compare/v0.0.11...v0.0.12
153
- [0.0.13]: https://github.com/oauth-xx/oauth2/compare/v0.0.12...v0.0.13
154
- [0.1.0]: https://github.com/oauth-xx/oauth2/compare/v0.0.13...v0.1.0
155
- [0.1.1]: https://github.com/oauth-xx/oauth2/compare/v0.1.0...v0.1.1
156
- [0.2.0]: https://github.com/oauth-xx/oauth2/compare/v0.1.1...v0.2.0
157
- [0.3.0]: https://github.com/oauth-xx/oauth2/compare/v0.2.0...v0.3.0
158
- [0.4.0]: https://github.com/oauth-xx/oauth2/compare/v0.3.0...v0.4.0
159
- [0.4.1]: https://github.com/oauth-xx/oauth2/compare/v0.4.0...v0.4.1
160
- [0.5.0]: https://github.com/oauth-xx/oauth2/compare/v0.4.1...v0.5.0
161
- [1.0.0]: https://github.com/oauth-xx/oauth2/compare/v0.9.4...v1.0.0
162
- [1.1.0]: https://github.com/oauth-xx/oauth2/compare/v1.0.0...v1.1.0
163
- [1.2.0]: https://github.com/oauth-xx/oauth2/compare/v1.1.0...v1.2.0
164
- [1.3.0]: https://github.com/oauth-xx/oauth2/compare/v1.2.0...v1.3.0
165
- [1.3.1]: https://github.com/oauth-xx/oauth2/compare/v1.3.0...v1.3.1
166
- [1.4.0]: https://github.com/oauth-xx/oauth2/compare/v1.3.1...v1.4.0
167
- [1.4.1]: https://github.com/oauth-xx/oauth2/compare/v1.4.0...v1.4.1
168
- [1.4.2]: https://github.com/oauth-xx/oauth2/compare/v1.4.1...v1.4.2
169
- [1.4.3]: https://github.com/oauth-xx/oauth2/compare/v1.4.2...v1.4.3
170
- [unreleased]: https://github.com/oauth-xx/oauth2/compare/v1.4.1...HEAD
769
+ - TAG: [v0.0.5][0.0.5t]
770
+
771
+ ## [0.0.4] - 2010-04-22
772
+
773
+ - TAG: [v0.0.4][0.0.4t]
774
+
775
+ ## [0.0.3] - 2010-04-22
776
+
777
+ - TAG: [v0.0.3][0.0.3t]
778
+
779
+ ## [0.0.2] - 2010-04-22
780
+
781
+ - TAG: [v0.0.2][0.0.2t]
782
+
783
+ ## [0.0.1] - 2010-04-22
784
+
785
+ - TAG: [v0.0.1][0.0.1t]
786
+
787
+ [gemfiles/readme]: gemfiles/README.md
788
+
789
+ [Unreleased]: https://github.com/ruby-oauth/oauth2/compare/v2.0.20...HEAD
790
+ [2.0.20]: https://github.com/ruby-oauth/oauth2/compare/v2.0.19...v2.0.20
791
+ [2.0.20t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.20
792
+ [2.0.19]: https://github.com/ruby-oauth/oauth2/compare/v2.0.18...v2.0.19
793
+ [2.0.19t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.19
794
+ [2.0.18]: https://github.com/ruby-oauth/oauth2/compare/v2.0.17...v2.0.18
795
+ [2.0.18t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.18
796
+ [2.0.17]: https://github.com/ruby-oauth/oauth2/compare/v2.0.16...v2.0.17
797
+ [2.0.17t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.17
798
+ [2.0.16]: https://github.com/ruby-oauth/oauth2/compare/v2.0.15...v2.0.16
799
+ [2.0.16t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.16
800
+ [2.0.15]: https://github.com/ruby-oauth/oauth2/compare/v2.0.14...v2.0.15
801
+ [2.0.15t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.15
802
+ [2.0.14]: https://github.com/ruby-oauth/oauth2/compare/v2.0.13...v2.0.14
803
+ [2.0.14t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.14
804
+ [2.0.13]: https://github.com/ruby-oauth/oauth2/compare/v2.0.12...v2.0.13
805
+ [2.0.13t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.13
806
+ [2.0.12]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.11...v2.0.12
807
+ [2.0.12t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.12
808
+ [2.0.11]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.10...v2.0.11
809
+ [2.0.11t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.11
810
+ [2.0.10]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.9...v2.0.10
811
+ [2.0.10t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.10
812
+ [2.0.9]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.8...v2.0.9
813
+ [2.0.9t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.9
814
+ [2.0.8]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.7...v2.0.8
815
+ [2.0.8t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.8
816
+ [2.0.7]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.6...v2.0.7
817
+ [2.0.7t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.7
818
+ [2.0.6]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.5...v2.0.6
819
+ [2.0.6t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.6
820
+ [2.0.5]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.4...v2.0.5
821
+ [2.0.5t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.5
822
+ [2.0.4]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.3...v2.0.4
823
+ [2.0.4t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.4
824
+ [2.0.3]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.2...v2.0.3
825
+ [2.0.3t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.3
826
+ [2.0.2]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.1...v2.0.2
827
+ [2.0.2t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.2
828
+ [2.0.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.0...v2.0.1
829
+ [2.0.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.1
830
+ [2.0.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.11...v2.0.0
831
+ [2.0.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.0
832
+ [1.4.11]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.10...v1.4.11
833
+ [1.4.11t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.11
834
+ [1.4.10]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.9...v1.4.10
835
+ [1.4.10t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.10
836
+ [1.4.9]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.8...v1.4.9
837
+ [1.4.9t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.9
838
+ [1.4.8]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.7...v1.4.8
839
+ [1.4.8t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.8
840
+ [1.4.7]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.6...v1.4.7
841
+ [1.4.7t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.7
842
+ [1.4.6]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.5...v1.4.6
843
+ [1.4.6t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.6
844
+ [1.4.5]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.4...v1.4.5
845
+ [1.4.5t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.5
846
+ [1.4.4]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.3...v1.4.4
847
+ [1.4.4t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.4
848
+ [1.4.3]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.2...v1.4.3
849
+ [1.4.3t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.3
850
+ [1.4.2]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.1...v1.4.2
851
+ [1.4.2t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.2
852
+ [1.4.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.0...v1.4.1
853
+ [1.4.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.1
854
+ [1.4.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.3.1...v1.4.0
855
+ [1.4.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.0
856
+ [1.3.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.3.0...v1.3.1
857
+ [1.3.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.3.1
858
+ [1.3.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.2.0...v1.3.0
859
+ [1.3.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.3.0
860
+ [1.2.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.1.0...v1.2.0
861
+ [1.2.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.2.0
862
+ [1.1.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.0.0...v1.1.0
863
+ [1.1.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.1.0
864
+ [1.0.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.9.4...v1.0.0
865
+ [1.0.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.0.0
866
+ [0.5.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.4.1...v0.5.0
867
+ [0.5.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.5.0
868
+ [0.4.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.4.0...v0.4.1
869
+ [0.4.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.4.1
870
+ [0.4.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.3.0...v0.4.0
871
+ [0.4.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.4.0
872
+ [0.3.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.2.0...v0.3.0
873
+ [0.3.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.3.0
874
+ [0.2.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.1.1...v0.2.0
875
+ [0.2.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.2.0
876
+ [0.1.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.1.0...v0.1.1
877
+ [0.1.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.1.1
878
+ [0.1.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.13...v0.1.0
879
+ [0.1.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.1.0
880
+ [0.0.13]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.12...v0.0.13
881
+ [0.0.13t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.13
882
+ [0.0.12]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.11...v0.0.12
883
+ [0.0.12t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.12
884
+ [0.0.11]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.10...v0.0.11
885
+ [0.0.11t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.11
886
+ [0.0.10]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.9...v0.0.10
887
+ [0.0.10t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.10
888
+ [0.0.9]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.8...v0.0.9
889
+ [0.0.9t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.9
890
+ [0.0.8]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.7...v0.0.8
891
+ [0.0.8t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.8
892
+ [0.0.7]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.6...v0.0.7
893
+ [0.0.7t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.7
894
+ [0.0.6]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.5...v0.0.6
895
+ [0.0.6t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.6
896
+ [0.0.5]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.4...v0.0.5
897
+ [0.0.5t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.5
898
+ [0.0.4]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.3...v0.0.4
899
+ [0.0.4t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.4
900
+ [0.0.3]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.2...v0.0.3
901
+ [0.0.3t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.3
902
+ [0.0.2]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.1...v0.0.2
903
+ [0.0.2t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.2
904
+ [0.0.1]: https://github.com/ruby-oauth/oauth2/compare/311d9f4...v0.0.1
905
+ [0.0.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.1