Skip to content

google api authentication by way of rust 🦀

Notifications You must be signed in to change notification settings

softprops/gauthz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gauthz Build Status Coverage Status

google api service authentication by way of rust

Install

Add the following to your project's Cargo.toml file

[dependencies]
gauthz = "0.1"

Usage

Typical use requires gauthz::Tokens configured with a tokio reactor handle gauthz::Credentials and gauthz::Scopes representing the access level for your intended API usage.

Note your hyper::Client must be configured with tls support. Hyper doesn't provide that out of the box but there are multiple crates that provide the support

A gauthz::Tokens instance provides two interfaces get which returns a Future that resolves to an access token and a Stream which resolves to new tokens when the current token expires ( typically ) after one hour. The stream interface is intended for long running applications which will inevitably require access for more than one hour.

extern crate futures;
extern crate gauthz;
extern crate tokio_core;

use futures::Future;
use tokio_core::reactor::Core;

use gauthz::{Credentials, Result, Scope, Tokens};
use gauthz::error::ErrorKind;

fn run() -> Result<String> {
    let mut core = Core::new()?;
    let tokens = Tokens::new(
        &core.handle(),
        Credentials::default().unwrap(),
        vec![Scope::CloudPlatform],
    );
    core.run(
        tokens.get().map(
            |t| t.value().to_owned()
        )
    )
}

fn main() {
    match run() {
        Ok(ok) => println!("{}", ok),
        Err(err) => println!("{}", err),
    }
}

These tokens may be used in Authorization HTTP headers to authenticate with the Google API's the tokens are scoped to.

pronounced

gawthz

Doug Tangren (softprops) 2017

About

google api authentication by way of rust 🦀

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages