Struct twitch_oauth2::UserToken [−][src]
pub struct UserToken { pub access_token: AccessToken, pub login: String, pub user_id: String, pub refresh_token: Option<RefreshToken>, pub never_expiring: bool, // some fields omitted }
An User Token from the OAuth implicit code flow or OAuth authorization code flow
Used for requests that need an authenticated user. See also AppAccessToken
See UserToken::builder
for authenticating the user using the OAuth authorization code flow
.
Fields
access_token: AccessToken
The access token used to authenticate requests with
login: String
Username of user associated with this token
user_id: String
User ID of the user associated with this token
refresh_token: Option<RefreshToken>
The refresh token used to extend the life of this user token
never_expiring: bool
Token will never expire
This is only true for old client IDs, like https://twitchapps.com/tmi and others
Implementations
impl UserToken
[src]
impl UserToken
[src]pub fn from_existing_unchecked(
access_token: impl Into<AccessToken>,
refresh_token: impl Into<Option<RefreshToken>>,
client_id: impl Into<ClientId>,
client_secret: impl Into<Option<ClientSecret>>,
login: String,
user_id: String,
scopes: Option<Vec<Scope>>,
expires_in: Option<Duration>
) -> UserToken
[src]
access_token: impl Into<AccessToken>,
refresh_token: impl Into<Option<RefreshToken>>,
client_id: impl Into<ClientId>,
client_secret: impl Into<Option<ClientSecret>>,
login: String,
user_id: String,
scopes: Option<Vec<Scope>>,
expires_in: Option<Duration>
) -> UserToken
Assemble token without checks.
If expires_in
is None
, we’ll assume token.is_elapsed
is always false
pub async fn from_existing<RE, C, F>(
http_client: C,
access_token: AccessToken,
refresh_token: impl Into<Option<RefreshToken>>,
client_secret: impl Into<Option<ClientSecret>>
) -> Result<UserToken, ValidationError<RE>> where
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F,
F: Future<Output = Result<HttpResponse, RE>>,
[src]
http_client: C,
access_token: AccessToken,
refresh_token: impl Into<Option<RefreshToken>>,
client_secret: impl Into<Option<ClientSecret>>
) -> Result<UserToken, ValidationError<RE>> where
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F,
F: Future<Output = Result<HttpResponse, RE>>,
Assemble token and validate it. Retrieves login
, client_id
and scopes
If the token is already expired, this function will fail to produce a UserToken
and return ValidationError::NotAuthorized
pub fn builder(
client_id: ClientId,
client_secret: ClientSecret,
redirect_url: RedirectUrl
) -> Result<UserTokenBuilder, ParseError>
[src]
client_id: ClientId,
client_secret: ClientSecret,
redirect_url: RedirectUrl
) -> Result<UserTokenBuilder, ParseError>
Create a UserTokenBuilder
to get a token with the OAuth Authorization Code
Trait Implementations
impl TwitchToken for UserToken
[src]
impl TwitchToken for UserToken
[src]fn token_type() -> BearerTokenType
[src]
fn client_id(&self) -> &ClientId
[src]
fn token(&self) -> &AccessToken
[src]
fn login(&self) -> Option<&str>
[src]
fn user_id(&self) -> Option<&str>
[src]
fn refresh_token<'life0, 'async_trait, RE, C, F>(
&'life0 mut self,
http_client: C
) -> Pin<Box<dyn Future<Output = Result<(), RefreshTokenError<RE>>> + Send + 'async_trait>> where
Self: Sized,
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F + Send,
F: Future<Output = Result<HttpResponse, RE>> + Send,
RE: 'async_trait,
C: 'async_trait,
F: 'async_trait,
'life0: 'async_trait,
Self: 'async_trait,
[src]
&'life0 mut self,
http_client: C
) -> Pin<Box<dyn Future<Output = Result<(), RefreshTokenError<RE>>> + Send + 'async_trait>> where
Self: Sized,
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F + Send,
F: Future<Output = Result<HttpResponse, RE>> + Send,
RE: 'async_trait,
C: 'async_trait,
F: 'async_trait,
'life0: 'async_trait,
Self: 'async_trait,
fn expires_in(&self) -> Duration
[src]
fn scopes(&self) -> &[Scope]
[src]
fn is_elapsed(&self) -> bool
[src]
#[must_use]fn validate_token<'life0, 'async_trait, RE, C, F>(
&'life0 self,
http_client: C
) -> Pin<Box<dyn Future<Output = Result<ValidatedToken, ValidationError<RE>>> + Send + 'async_trait>> where
Self: Sized,
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F + Send,
F: Future<Output = Result<HttpResponse, RE>> + Send,
RE: 'async_trait,
C: 'async_trait,
F: 'async_trait,
'life0: 'async_trait,
Self: Sync + 'async_trait,
[src]
&'life0 self,
http_client: C
) -> Pin<Box<dyn Future<Output = Result<ValidatedToken, ValidationError<RE>>> + Send + 'async_trait>> where
Self: Sized,
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F + Send,
F: Future<Output = Result<HttpResponse, RE>> + Send,
RE: 'async_trait,
C: 'async_trait,
F: 'async_trait,
'life0: 'async_trait,
Self: Sync + 'async_trait,
#[must_use]fn revoke_token<'async_trait, RE, C, F>(
self,
http_client: C
) -> Pin<Box<dyn Future<Output = Result<(), RevokeTokenError<RE>>> + Send + 'async_trait>> where
Self: Sized,
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F + Send,
F: Future<Output = Result<HttpResponse, RE>> + Send,
RE: 'async_trait,
C: 'async_trait,
F: 'async_trait,
Self: Send + 'async_trait,
[src]
self,
http_client: C
) -> Pin<Box<dyn Future<Output = Result<(), RevokeTokenError<RE>>> + Send + 'async_trait>> where
Self: Sized,
RE: Error + Send + Sync + 'static,
C: FnOnce(HttpRequest) -> F + Send,
F: Future<Output = Result<HttpResponse, RE>> + Send,
RE: 'async_trait,
C: 'async_trait,
F: 'async_trait,
Self: Send + 'async_trait,
Auto Trait Implementations
impl RefUnwindSafe for UserToken
impl RefUnwindSafe for UserToken
impl UnwindSafe for UserToken
impl UnwindSafe for UserToken
Blanket Implementations
impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
impl<T> WithSubscriber for T
[src]
impl<T> WithSubscriber for T
[src]pub fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
[src]
S: Into<Dispatch>,