package goth // Params is used to pass data to sessions for authorization. An existing // implementation, and the one most likely to be used, is `url.Values`. type Params interface { Get(string) string } // Session needs to be implemented as part of the provider package. // It will be marshaled and persisted between requests to "tie" // the start and the end of the authorization process with a // 3rd party provider. type Session interface { // GetAuthURL returns the URL for the authentication end-point for the provider. GetAuthURL() (string, error) // Marshal generates a string representation of the Session for storing between requests. Marshal() string // Authorize should validate the data from the provider and return an access token // that can be stored for later access to the provider. Authorize(Provider, Params) (string, error) }