Documentation on how to use context on client. Why contextKey type?
After adding the middleware router.Use(oauth.Authorize("mySecretKey-10101", nil)) and being able to authorize a user, I had some issues figuring out how to access the information of the access token using the Context.
The middleware.go file adds the token information to the Context using a new type that is basically a string. Code in question: `type contextKey string
const ( CredentialContext contextKey = "oauth.credential" ClaimsContext contextKey = "oauth.claims" ScopeContext contextKey = "oauth.scope" TokenTypeContext contextKey = "oauth.tokentype" AccessTokenContext contextKey = "oauth.accesstoken" )`
Given that the context is accessed using r.Context().Value(key) and that key is basically a string, I thought I had to access the claims just by using r.Context().Value("oauth.claims") but this approach returned nil.
To successfully access the token information in the context I had to import the oauth package and use the consts that I put above since their type is not a string but contextKey. Working Example:
r.Context().Value(oauth.ClaimsContext)
I was wondering why this contextKey type is used instead of using a string
This type is used to avoid mistakes and package colision you can read more about this https://medium.com/@matryer/context-keys-in-go-5312346a868d