Struct inth_oauth2::client::Client [] [src]

pub struct Client<P: Provider> {
    pub client_id: String,
    pub client_secret: String,
    pub redirect_uri: Option<String>,
    // some fields omitted
}

OAuth 2.0 client.

Fields

client_id

Client ID.

client_secret

Client secret.

redirect_uri

Redirect URI.

Methods

impl<P: Provider> Client<P>

fn new(client_id: String, client_secret: String, redirect_uri: Option<String>) -> Self

Creates a client.

Examples

use inth_oauth2::Client;
use inth_oauth2::provider::google::Installed;

let client = Client::<Installed>::new(
    String::from("CLIENT_ID"),
    String::from("CLIENT_SECRET"),
    Some(String::from("urn:ietf:wg:oauth:2.0:oob"))
);

fn auth_uri(&self, scope: Option<&str>, state: Option<&str>) -> Result<Url, ClientError>

Returns an authorization endpoint URI to direct the user to.

See RFC 6749, section 3.1.

Examples

use inth_oauth2::Client;
use inth_oauth2::provider::google::Installed;

let client = Client::<Installed>::new(
    String::from("CLIENT_ID"),
    String::from("CLIENT_SECRET"),
    Some(String::from("urn:ietf:wg:oauth:2.0:oob"))
);

let auth_uri = client.auth_uri(
    Some("https://www.googleapis.com/auth/userinfo.email"),
    None
);

fn request_token(&self, http_client: &Client, code: &str) -> Result<P::Token, ClientError>

Requests an access token using an authorization code.

See RFC 6749, section 4.1.3.

impl<P: Provider> Client<P> where P::Token: Token<Refresh>

fn refresh_token(&self, http_client: &Client, token: P::Token, scope: Option<&str>) -> Result<P::Token, ClientError>

Refreshes an access token.

See RFC 6749, section 6.

fn ensure_token(&self, http_client: &Client, token: P::Token) -> Result<P::Token, ClientError>

Ensures an access token is valid by refreshing it if necessary.

Trait Implementations

Derived Implementations

impl<P: Eq + Provider> Eq for Client<P>

impl<P: PartialEq + Provider> PartialEq for Client<P>

fn eq(&self, __arg_0: &Client<P>) -> bool

fn ne(&self, __arg_0: &Client<P>) -> bool

impl<P: Clone + Provider> Clone for Client<P>

fn clone(&self) -> Client<P>

1.0.0fn clone_from(&mut self, source: &Self)

impl<P: Debug + Provider> Debug for Client<P>

fn fmt(&self, __arg_0: &mut Formatter) -> Result