NetworkOAuthSessionInterface Class Reference

#include <network_oauth.h>

详细描述

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.

公共成员函数

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)
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)
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)
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)
MAXON_METHOD Result < Url SignUrl (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 < Url GetOAuthTokenUrl (const String &account) const

静态公共成员函数

static MAXON_METHOD NetworkOAuthSessionInterface Alloc ( MAXON_SOURCE_LOCATION_DECLARATION )

私有成员函数

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

成员函数文档编制

◆  MAXON_INTERFACE_NONVIRTUAL()

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

◆  Alloc()

static MAXON_METHOD NetworkOAuthSessionInterface * Alloc ( MAXON_SOURCE_LOCATION_DECLARATION   )
static

◆  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.

参数
[in] service Service 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] account Account 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] appKey 应用程序 Key from the provider.
[in] appSecret 应用程序 Secret from the provider.
[in] signatureMethod Signature method to sign with. OAUTHHTTPMETHOD::PLAINTEXT should only be used for non ssl connections. This method will be used for all url signings.
[in] httpMethod Http method to sign with.
[in] forceReapprovement Set to true to delete the old cached tokens and ask the user for new approval on the web side of the provide.
[in] askForApproval Optional 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] verifyAccountName Callback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
返回
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.

参数
[in] authUrl Https://accounts.google.com/o/oauth2/auth.
[in] tokenUrl Https://accounts.google.com/o/oauth2/token.
[in] account Account 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] appKey 应用程序 Key from the provider.
[in] appSecret 应用程序 Secret from the provider.
[in] forceReapprovement Set to true to delete the old cached tokens and ask the user for new approval.
[in] allowRedirectServer True 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] redirectRef Optional parameter server-less authentication (see UrlRedirectInterface ).
[in] askForApproval Optional 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] verifyAccountName Callback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
返回
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.

参数
[in] tokenUrl Url to the toke url. this generates a http post to get the oauth access token.
[in] userName User name to login with.
[in] password Password for the given username.
[in] account Account 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] appKey 应用程序 Key from the provider.
[in] appSecret 应用程序 Secret from the provider.
[in] verifyAccountName Callback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
返回
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.

参数
[in] tokenUrl Url to the toke url. this generates a http post to get the oauth access token.
[in] refreshToken OAuth2.0 refresh token from the last session.
[in] accessToken OAuth2.0 access token from the last session.
[in] appKey 应用程序 Key from the provider.
[in] appSecret 应用程序 Secret from the provider.
[in] verifyAccountName Callback to verify the stored token and retrieve the account name. This callback is triggered on the first connect.
返回
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.

参数
[in] url Url to be signed.
[in] httpMethod Http 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.

参数
[in] url Url to be signed and read.
[in] httpMethod Http 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.

参数
[in] url Url to be signed and read.
[in] httpMethod Http 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.

返回
Token string on success.

◆  GetRefreshToken()

MAXON_METHOD CString GetRefreshToken ( ) const

GetOAuthToken returns the OAuth token to access the resource.

返回
Token string on success.

◆  GetOAuthTokenUrl()

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

Returns the url where the login token is stored.

返回
OK on success.