PC SOFT

ONLINE HELP
FOR WINDEV, WEBDEV AND WINDEV MOBILE

New WINDEV, WEBDEV, WINDEV Mobile 22 feature!
  • Operating mode of OAuth 2.0 authentication
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Others
Stored procedures
Performs an authentication using the OAuth 2.0 protocol on any Web service.
Versions 23 and later
iPhone/iPad This function is now available for the iPhone/iPad applications.
New in version 23
iPhone/iPad This function is now available for the iPhone/iPad applications.
iPhone/iPad This function is now available for the iPhone/iPad applications.
Example
// Example used to retrieve a token to perform a request on DropBox
OAuth2Params is OAuth2Parameters
OAuth2Params..ClientID = "01234567890123456789"
OAuth2Params..ClientSecret = "98765432109876543210"
OAuth2Params..AuthURL = "https://www.dropbox.com/oauth2/authorize"
OAuth2Params..TokenURL = "https://api.dropboxapi.com/oauth2/token"
OAuth2Params..AdditionalParameters = "force_reapprove=false"

// Ask for authentication: opens the login window...
MyToken is AuthToken = AuthIdentify(OAuth2Params)

// Request authenticated on a DropBox API
req is httpRequest
req..Method = httpPost
req..URL = "https://api.dropboxapi.com/2/files/list_folder"
req..AuthToken = MyToken // Authentication token
req..ContentType = "application/json"
vAPIParam is Variant
vAPIParam.path = "/Homework/math"
vAPIParam.recursive = False
vAPIParam.include_media_info = False
vAPIParam.include_deleted = False
vAPIParam.include_has_explicit_shared_members = False
req..Content = VariantToJSON(vAPIParam)

HTTPresponse is httpResponse = HTTPSend(req)
let Data = JSONToVariant(HTTPresponse..Content)
// Use the incoming data...
Syntax
<Result> = AuthIdentify(<Authentication Parameters>)
<Result>: AuthToken variable
AuthToken variable corresponding to the token containing the access information for the next authenticated requests.
<Authentication Parameters>: OAuth2Parameters variable
Name of OAuth2Parameters variable containing the parameters describing the elements required to retrieve the access token.
Remarks

Operating mode of OAuth 2.0 authentication

The steps of OAuth 2.0 authentication performed by AuthIdentify are as follows:
  • Running a first HTTP request to ask for an authorization (authorization URL specified in the OAuth2Parameters variable).
  • Opening a window for user identification according to the OAuth 2.0 protocol. The identification interface is given by the service accessed.
  • After identification, the server returns a first authorization code allowing you to ask the resources for an access token. This code is added in parameter of second URL (access token URL specified in the OAuth2Parameters variable).
  • Running the second HTTP request to ask for the access token. The result is a JSON buffer that contains, among other things, the access token ("access_token") that will be used for the authenticated requests. The AuthToken variable contains the information found in this JSON buffer. This access token will be used by the calls to the APIs of Web service.
To use the APIs of Web service, all you have to do is call HTTPSend with an httpRequest variable defining the request to run.
The AuthToken variable will have to be assigned to the ..AuthToken property of httpRequest variable (see the example).
In this case, the server will receive the HTTP "Authorization" header with a value in the following format: "Authorization: Bearer xxx_access_token_xxx".
Caution:
  • If the server does not return the access token in the format of JSON code according to the OAuth2.0 standard, an error will occur and the token will not be retrieved. The server response can be retrieved via the ..ServerResponse property of AuthToken variable.
  • If the server does not support the HTTP "Authorization" header for transmitting the access token, this transmission must be done by the developer according to the format expected by the requested service.
    The following example allows you to use the Web service of Facebook. In this case, the access token must be specified on the request URL.
    • WINDEVAndroid Code sample for Facebook
      // Example used to retrieve the name of the Facebook account
      MyToken is AuthToken
      MyTokenParam is OAuth2Parameters

      MyTokenParam..ClientID = "123456789012345"
      MyTokenParam..ClientSecret = "45g8jh5kll45579021qsg5444j"
      MyTokenParam..AuthURL = "https://www.facebook.com/dialog/oauth"
      MyTokenParam..TokenURL = "https://graph.facebook.com/v2.3/oauth/access_token"
      MyTokenParam..RedirectionURL = "http://localhost:9874/"
      MyTokenParam..Scope = "email"

      MyToken = AuthIdentify(MyTokenParam)
      IF MyToken <> Null THEN
      IF ErrorOccurred THEN
      Error(ErrorInfo())
      ELSE
      // Token specified on the request URL
      HTTPRequest("https://graph.facebook.com/me?access_token=" + MyToken..Value)
      vMyRes is Variant = JSONToVariant(HTTPGetResult(httpResult))
      // Retrieve the account name
      Trace(vMyRes.name)
      END
      END
    • iPhone/iPad Code sample for Facebook:
      MyToken is AuthToken
      MyTokenParam is OAuth2Parameters
      MyTokenParam..ClientID = "1705548803004741"
      MyTokenParam..ClientSecret = "7b3305a5aa1687ef04af001ec3388ecc"
      MyTokenParam..AuthURL = "https://www.facebook.com/dialog/oauth"
      MyTokenParam..TokenURL = "https://graph.facebook.com/oauth/access_token"
      MyTokenParam..RedirectionURL = "fb1705548803004741://authorize/"
      MyTokenParam..Scope = "email"

      MyToken = AuthIdentify(MyTokenParam)
      IF MyToken <> Null THEN
      IF ErrorOccurred THEN
      Error(ErrorInfo())
      ELSE
      // Token specified on the request URL
      HTTPRequest("https://graph.facebook.com/me?access_token=" + MyToken..Value)
      vMyRes is Variant = JSONToVariant(HTTPGetResult(httpResult))
      // Retrieve the account name
      Trace(vMyRes.name)
      END
      END
Related Examples:
WD OAuth Training (WINDEV): WD OAuth
[ + ] OAuth allows you to act as user of an external platform without knowing the identifiers (user name and password) of this user.
Several external platforms (among which Google, Twitter, Facebook) propose APIs for which you have the ability to connect with the information belonging to one of their users. This identification is performed via OAuth. Therefore, all the requests performed on their services (API, ...) will require an access token identifying both the application (the "client") and the user.
The example proposes to connect to Google and Microsoft via the AuthConnect function and the OAuth2Parameter type.
Components
WINDEVWEBDEV - Server codeReports and Queries wd230ggl.dll
Windows Mobile wp230ggl.dll
Linux wd230ggl.so
Android wd230android.jar
Minimum required version
  • Version 22
This page is also available for…
Comments
Click [Add] to post a comment