NetworkOAuthSessionInterface Class Reference

#include <network_oauth.h>

Detailed Description

@MAXON_ANNOTATION{obfuscate=true}

OAuth helps to connect to services using this protocol (http://en.wikipedia.org/wiki/OAuth) OAuth is used by a lot of APIs to deliver web based content (e.g. dropbox, google, twitter...) Supported are OAuth1 and OAuth2. Here is an prototype how to use the class functions.

Public Member Functions

MAXON_METHOD Result< StringInitV1Session (const Url &service, const String &account, const CString &appKey, const CString &appSecret, OAUTHSIGNATUREMETHOD signatureMethod, OAUTHHTTPMETHOD httpMethod, Bool forceReapprovement, const Delegate< Result< void >(const NetworkOAuthSessionRef &session, const Url &url)> &askForApproval, const Delegate< Result< String >(const NetworkOAuthSessionRef &session)> &verifyAccountName)
 
MAXON_METHOD Result< StringInitV2Session (const Url &authUrl, const Url &tokenUrl, const Url &redirectUrl, const String &account, const CString &appKey, const CString &appSecret, const CString &scope, Bool forceReapprovement, Bool allowRedirectServer, const UrlRedirectRef &redirectRef, const Delegate< Result< void >(const NetworkOAuthSessionRef &session, const Url &url)> &askForApproval, const Delegate< Result< String >(const NetworkOAuthSessionRef &session, const DataDictionary &response)> &verifyAccountName)
 
MAXON_METHOD Result< StringInitV2SessionWithResourceOwnerPasswordGrant (const Url &tokenUrl, const String &userName, const String &password, const String &account, const CString &appKey, const CString &appSecret, const CString &scope, const Delegate< Result< String >(const NetworkOAuthSessionRef &session, const DataDictionary &response)> &verifyAccountName)
 
MAXON_METHOD Result< StringInitV2SessionWithRefreshOrAccessToken (const Url &tokenUrl, const CString &refreshToken, const CString &accessToken, const CString &appKey, const CString &appSecret, const CString &scope, const Delegate< Result< String >(const NetworkOAuthSessionRef &session, const DataDictionary &response)> &verifyAccountName)
 
MAXON_METHOD Result< UrlSignUrl (const Url &url, OAUTHHTTPMETHOD httpMethod) const
 
MAXON_METHOD Result< BaseArray< DataDictionary > > ReadJson (const Url &url, OAUTHHTTPMETHOD httpMethod, const StringDecodingRef &stringDecoding) const
 
MAXON_METHOD Result< BaseArray< DataDictionary > > ReadJWT (const Url &url, OAUTHHTTPMETHOD httpMethod, const StringDecodingRef &stringDecoding, const Block< const Char > &publicKey, BaseArray< Char > *originalToken) const
 
MAXON_METHOD Int GetAuthVersion () const
 
MAXON_METHOD String GetAccount () const
 
MAXON_METHOD CString GetAccessToken () const
 
MAXON_METHOD CString GetRefreshToken () const
 
MAXON_METHOD Result< UrlGetOAuthTokenUrl (const String &account) const
 
MAXON_METHOD CString GetIdToken () const
 

Static Public Member Functions

static MAXON_METHOD NetworkOAuthSessionInterfaceAlloc (MAXON_SOURCE_LOCATION_DECLARATION)
 

Private Member Functions

 MAXON_INTERFACE_NONVIRTUAL (NetworkOAuthSessionInterface, MAXON_REFERENCE_NORMAL, "net.maxon.interface.networkoauthsession")
 

Member Function Documentation

◆ MAXON_INTERFACE_NONVIRTUAL()

MAXON_INTERFACE_NONVIRTUAL ( NetworkOAuthSessionInterface  ,
MAXON_REFERENCE_NORMAL  ,
"net.maxon.interface.networkoauthsession"   
)
private

◆ Alloc()

◆ InitV1Session()

MAXON_METHOD Result<String> InitV1Session ( const Url service,
const String account,
const CString appKey,
const CString appSecret,
OAUTHSIGNATUREMETHOD  signatureMethod,
OAUTHHTTPMETHOD  httpMethod,
Bool  forceReapprovement,
const Delegate< Result< void >(const NetworkOAuthSessionRef &session, const Url &url)> &  askForApproval,
const Delegate< Result< String >(const NetworkOAuthSessionRef &session)> &  verifyAccountName 
)

Starts a OAuth1 session. The first time (or if forceReapprovement is true) the user will be asked for credentials to access the service.

Parameters
[in]serviceService provider to connect with (e.g. "https://api.dropbox.com/1/oauth"). This id will be used to store the access keys together with the account.
[in]accountAccount to connect with. Depending on the service provider this can be the mail address or name. This value is used to store the private access tokens. Leave blank to create a new login. If the String was empty check the return value for the newly created account name.
[in]appKeyApplication Key from the provider.
[in]appSecretApplication Secret from the provider.
[in]signatureMethodSignature method to sign with. OAUTHHTTPMETHOD::PLAINTEXT should only be used for non ssl connections. This method will be used for all url signings.
[in]httpMethodHttp method to sign with.
[in]forceReapprovementSet to true to delete the old cached tokens and ask the user for new approval on the web side of the provide.
[in]askForApprovalOptional callback to ask the user for approval of the a new session token. Usually a web browser opens the url where the user needs to click "Accept". Set to nullptr if you want the standard behavior "url.IoShowInOS(IOSHOWINOSFLAGS::OPEN_IN_EXPLORER)". This callback is only triggered if there is no valid session token found.
[in]verifyAccountNameCallback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
Returns
Returns the account name delivered by the provider.

◆ InitV2Session()

MAXON_METHOD Result<String> InitV2Session ( const Url authUrl,
const Url tokenUrl,
const Url redirectUrl,
const String account,
const CString appKey,
const CString appSecret,
const CString scope,
Bool  forceReapprovement,
Bool  allowRedirectServer,
const UrlRedirectRef &  redirectRef,
const Delegate< Result< void >(const NetworkOAuthSessionRef &session, const Url &url)> &  askForApproval,
const Delegate< Result< String >(const NetworkOAuthSessionRef &session, const DataDictionary &response)> &  verifyAccountName 
)

Starts a OAuth2 session. The first time (or if forceReapprovement is true) the user will be asked for credentials to access the service.

Parameters
[in]authUrlHttps://accounts.google.com/o/oauth2/auth.
[in]tokenUrlHttps://accounts.google.com/o/oauth2/token.
[in]accountAccount to connect with. Depending on the service provider this can be the mail address or name. This value is used to store the private access tokens. Leave blank to create a new login. If the String was empty check the return value for the newly created account name.
[in]appKeyApplication Key from the provider.
[in]appSecretApplication Secret from the provider.
[in]forceReapprovementSet to true to delete the old cached tokens and ask the user for new approval.
[in]allowRedirectServerTrue if the application should run a local server to catch the redirect. If false the server-less method can be used to catch the browser redirects directly.
[in]redirectRefOptional parameter server-less authentication (see UrlRedirectInterface).
[in]askForApprovalOptional callback to ask the user for approval of the a new session token. Usually a web browser opens the url where the user needs to click "Accept". Set to nullptr if you want the standard behavior "url.IoShowInOS(IOSHOWINOSFLAGS::OPEN_IN_EXPLORER)". This callback is only triggered if there is no valid session token found.
[in]verifyAccountNameCallback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
Returns
Returns the account name delivered by the provider.

◆ InitV2SessionWithResourceOwnerPasswordGrant()

MAXON_METHOD Result<String> InitV2SessionWithResourceOwnerPasswordGrant ( const Url tokenUrl,
const String userName,
const String password,
const String account,
const CString appKey,
const CString appSecret,
const CString scope,
const Delegate< Result< String >(const NetworkOAuthSessionRef &session, const DataDictionary &response)> &  verifyAccountName 
)

Starts a OAuth2 session with the "Resource Owner Password Grant" method. This is less secure because the user name and password needs to be entered in the code and there is no redirect url where the server can send the result back to the verified source.

Parameters
[in]tokenUrlUrl to the toke url. this generates a http post to get the oauth access token.
[in]userNameUser name to login with.
[in]passwordPassword for the given username.
[in]accountAccount to connect with. Depending on the service provider this can be the mail address or name. This value is used to store the private access tokens. Leave blank to create a new login. If the String was empty check the return value for the newly created account name.
[in]appKeyApplication Key from the provider.
[in]appSecretApplication Secret from the provider.
[in]verifyAccountNameCallback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
Returns
Returns the account name delivered by the provider.

◆ InitV2SessionWithRefreshOrAccessToken()

MAXON_METHOD Result<String> InitV2SessionWithRefreshOrAccessToken ( const Url tokenUrl,
const CString refreshToken,
const CString accessToken,
const CString appKey,
const CString appSecret,
const CString scope,
const Delegate< Result< String >(const NetworkOAuthSessionRef &session, const DataDictionary &response)> &  verifyAccountName 
)

Starts a OAuth2 session with the "Refresh Token Grant" method. First the access token will be tried, if it's expired the refresh token will be used to generate a new access token.

Parameters
[in]tokenUrlUrl to the toke url. this generates a http post to get the oauth access token.
[in]refreshTokenOAuth2.0 refresh token from the last session.
[in]accessTokenOAuth2.0 access token from the last session.
[in]appKeyApplication Key from the provider.
[in]appSecretApplication Secret from the provider.
[in]verifyAccountNameCallback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
Returns
Returns the account name delivered by the provider.

◆ SignUrl()

MAXON_METHOD Result<Url> SignUrl ( const Url url,
OAUTHHTTPMETHOD  httpMethod 
) const

Signs a Url with the authentication tokens using the selected methods.

Parameters
[in]urlUrl to be signed.
[in]httpMethodHttp method to sign with.

◆ ReadJson()

MAXON_METHOD Result<BaseArray<DataDictionary> > ReadJson ( const Url url,
OAUTHHTTPMETHOD  httpMethod,
const StringDecodingRef &  stringDecoding 
) const

Signs and reads a given url directly into a json dictionary.

Parameters
[in]urlUrl to be signed and read.
[in]httpMethodHttp method to load the file.

◆ ReadJWT()

MAXON_METHOD Result<BaseArray<DataDictionary> > ReadJWT ( const Url url,
OAUTHHTTPMETHOD  httpMethod,
const StringDecodingRef &  stringDecoding,
const Block< const Char > &  publicKey,
BaseArray< Char > *  originalToken 
) const

Signs and reads a given url directly into a json dictionary.

Parameters
[in]urlUrl to be signed and read.
[in]httpMethodHttp method to load the file.

◆ GetAuthVersion()

MAXON_METHOD Int GetAuthVersion ( ) const

Returns the auth version used by this session. The protocol version can be 1 or 2.

◆ GetAccount()

MAXON_METHOD String GetAccount ( ) const

Returns the user account id connected to this session.

◆ GetAccessToken()

MAXON_METHOD CString GetAccessToken ( ) const

GetOAuthToken returns the OAuth token to access the resource.

Returns
Token string on success.

◆ GetRefreshToken()

MAXON_METHOD CString GetRefreshToken ( ) const

GetOAuthToken returns the OAuth token to access the resource.

Returns
Token string on success.

◆ GetOAuthTokenUrl()

MAXON_METHOD Result<Url> GetOAuthTokenUrl ( const String account) const

Returns the url where the login token is stored.

Returns
OK on success.

◆ GetIdToken()

MAXON_METHOD CString GetIdToken ( ) const

GetIdTokenToken returns the id_token of the OAuth session.

Returns
Token string on success.