## ESoupAuthBearer ESoupAuthBearer — OAuth 2.0 support for libsoup |

## Synopsis

    #include <libebackend/libebackend.h>

    struct              ESoupAuthBearer;
    struct              ESoupAuthBearerClass;
    void                e_soup_auth_bearer_set_access_token (ESoupAuthBearer *bearer,
                                                             const gchar *access_token,
                                                             gint expires_in_seconds);

## Description

ESoupAuthBearer adds libsoup support for the use of bearer tokens in HTTP requests to access OAuth 2.0 protected resources, as defined in RFC 6750.

An EBackend should integrate ESoupAuthBearer first by adding it as a feature to a SoupSession's SoupAuthManager, then from a SoupSession "authenticate" handler call `e_source_get_oauth2_access_token()` and pass the results to `e_soup_auth_bearer_set_access_token()`.

## Details

### struct ESoupAuthBearer

    struct ESoupAuthBearer {
    	SoupAuth parent;
    	ESoupAuthBearerPrivate *priv;
    };

Contains only private data that should be read and manipulated using the functions below.

Since 3.10

### struct ESoupAuthBearerClass

    struct ESoupAuthBearerClass {
    	SoupAuthClass parent_class;
    };

### e_soup_auth_bearer_set_access_token ()

    void                e_soup_auth_bearer_set_access_token (ESoupAuthBearer *bearer,
                                                             const gchar *access_token,
                                                             gint expires_in_seconds);

This function is analogous to `soup_auth_authenticate()` for "Basic" HTTP authentication, except it takes an OAuth 2.0 access token instead of a username and password.

If `expires_in_seconds` is greater than zero, `soup_auth_is_authenticated()` will return `FALSE` after the given number of seconds have elapsed.

`bearer` : | an ESoupAuthBearer
`access_token` : | an OAuth 2.0 access token
`expires_in_seconds` : | expiry for `access_token`, or 0 if unknown

Since 3.10