Ce document en français.
The use of this software subjects you to our Terms Of Use and Data Protection Policy.
OAuth2OOo is part of a Suite of LibreOffice and/or OpenOffice extensions allowing to offer you innovative services in these office suites.
This extension is the implementation of the OAuth 2.0 protocol. Protocol allowing you to obtain your consent so that an application can access your data present at the GAFA.
It allows executing HTTP requests in BASIC and provides the following macros as an example:
If you open a document beforehand, you can launch them by:
Tools -> Macros -> Run Macro… -> My Macros -> OAuth2OOo -> macro-name
-> Main -> Run
It also allows grabbing internet data in a Calc sheet. See the following Calc files as an example:
And finally, it allows you to drive Firefox using a Calc file (or any other browser supported by Selenium). See the following files:
Being free software I encourage you:
In short, to participate in the development of this extension. Because it is together that we can make Free Software smarter.
In order to take advantage of the latest versions of the Python libraries used in OAuth2OOo, version 2 of Python has been abandoned in favor of Python 3.8 minimum.
This means that OAuth2OOo no longer supports OpenOffice and LibreOffice 6.x on Windows since version 1.1.0.
I can only advise you to migrate to LibreOffice 7.x.
The requirement depend on the platform (architecture) on which the extension is installed:
If you are on Windows (win32 or win_amd64) you must use LibreOffice version 7.x minimum.
If you are on Linux (x86_64) with a Python version from 3.8 to 3.12 you must use LibreOffice version 6.x or higher (LibreOffice version 7.x is strongly recommended).
For all other platforms / architectures (Linux, macOS… / aarch64, arm64…) or Python version, you need:
pip install requirements.txt
On Linux and macOS the packages used by the extension, if already installed, may come from the system and therefore may not be up to date.
To ensure that your Python packages are up to date it is recommended to use the System Info option in the extension Options accessible by:
Tools -> Options -> Internet -> OAuth2 protocol -> View log -> System Info
If outdated packages appear, you can update them with the command:
sudo -i pip3 install --upgrade <package-name>
For more information see: What has been done for version 1.3.0.
If you want to drive Firefox in Calc on Ubuntu then you need to reinstall Firefox from the Mozilla PPA.
To install the Mozilla PPA please type the command:
sudo add-apt-repository ppa:mozillateam/ppa
It seems important that the file was not renamed when it was downloaded.
If necessary, rename it before installing it.
Restart LibreOffice after installation.
Be careful, restarting LibreOffice may not be enough.
soffice
and using the key combination Ctrl + C
if after stopping LibreOffice, the terminal is not active (no command prompt).This extension is not made to be used alone, but provide OAuth2 service to other LibreOffice / OpenOffice extensions.
Here’s how we use its API:
identifier = “io.github.prrvchr.OAuth2OOo.OAuth2Service”
service = ctx.ServiceManager.createInstanceWithContext(identifier, ctx)
initialized = service.initializeSession(registered_url, user_account)
The return value: initialized
is True if user_account
is already authorized for registered_url
.
initialized = service.initializeUrl(registered_url)
The return value: initialized
is True if registered_url
was successfully found in the OAuth2 service configuration.
format = ‘Bearer %s’
token = service.getToken(format)
The OAuth2 protocol allows access to server resources, after accepting the connection authorization, by exchanging tokens.
The revocation takes place in the management of the applications associated with your account.
No more password is stored in LibreOffice.
LibreOffice 7.3.7.2 - Lubuntu 22.04 - Python version 3.10.12
LibreOffice 7.5.4.2(x86) - Windows 10 - Python version 3.8.16 (under Lubuntu 22.04 / VirtualBox 6.1.38)
LibreOffice 7.4.3.2(x64) - Windows 10(x64) - Python version 3.8.15 (under Lubuntu 22.04 / VirtualBox 6.1.38)
LibreOffice 24.8.0.3 (x86_64) - Windows 10(x64) - Python version 3.9.19 (under Lubuntu 22.04 / VirtualBox 6.1.38)
Does not work with OpenOffice see bug 128569. Having no solution, I encourage you to install LibreOffice.
I encourage you in case of problem
to create an issue
I will try to solve it
Writing of a new XWizard interface in order to replace the Wizard service which became defective with version 6.4.x and 7.x of LibreOffice (see bug 132110).
This new interface also fixes bug 132661 and bug 132666 and allows access to versions 6.4.x and 7.x of LibreOffice…
In addition this new XWizard adds new functionality such as:
Fixed an issue with tokens without expiration (as used by Dropbox) on testing their validity…
Many other fix…
Rewrite of the OAuth2 wizard trying to follow the MVA model as best as possible. This wizard is made up of 5 pages inheriting from the UNO XWizardPage interface:
Rewrite of the three UNO services provided by the OAuth2OOo extension in three separate files:
Rewrite of the options dialog accessible by Tools -> Options -> Internet -> Protocol OAuth2. This dialog is composed of two windows:
Rewrite a single data model: OAuth2Model managing wizard, services and options dialog.
Google loopback flow error has been fixed. See Issue #10
Use for Dropbox their new OAuth2 API with expirable tokens.
Many other fix…
Porting Python API Requests to LibreOffice / OpenOffice UNO API. Two UNO interfaces are accessible:
The XRequestParameter interface supports sync token handling as well as HTTP request paging, as used in the HTTP Rest APIs
Uploading and downloading files is possible thanks to the methods or properties:
XOAuth2Service.download()
allowing resumable file download.XOAuth2Service.upload()
allowing resumable file upload.XOAuth2Service.getInputStream()
to get an input stream.XRequestParameter.DataSink
to set an input stream.XRequestResponse.getInputStream()
to get an input stream.Porting Java API javax.json to LibreOffice / OpenOffice UNO API as defined in idl files: com.sun.star.json.*
getJsonBuilder()
interface of XRequestParameter.getJson()
interface of XRequestResponse.This makes HTTP requests using JSON easily usable in the BASIC language of LibreOffice.
Writing of 15 functions in Calc AddIns as described in the following files:
com.sun.star.auth.Oauth2Plugin
providing these new interfaces.These 4 new files give access to 15 new Calc formulas which are:
GETHTTPBOBY(URL,METHOD,ENCODING,PARAMETERS)
PARSEHTML(DATA,PATH,BASEURL)
PARSEXML(DATA,PATH,BASEURL)
PARSEJSON(DATA,PATH)
JAVASCRIPT2XML(DATA,PATH)
XML2JSON(DATA,PATH)
JAVASCRIPT2JSON(DATA,PATH)
DUBLINCORE2JSON(DATA,BASEURL)
JSONLD2JSON(DATA,BASEURL)
MICRODATA2JSON(DATA,BASEURL)
MICROFORMAT2JSON(DATA,BASEURL)
OPENGRAPH2JSON(DATA,BASEURL)
RDFA2JSON(DATA,BASEURL)
FLATTENJSON(DATA,TYPENAME,PATH,SEPARATOR)
SPLITJSON(DATA,TYPENAME,PATH,SEPARATOR)
End of support for Python 2.x and therefore for OpenOffice.
Integration of Selenium version 4.10 in the extension in order to make LibreOffice able to control a browser via Calc formulas inserted in a spreadsheet.
Use of webdriver_manager version 3.8.6 to automate the installation of the browser’s WebDriver.
Creation of 5 Calc formulas allowing the piloting of the browser:
BROWSEROPEN(BROWSER,PATH,INIT,OPTIONS)
BROWSERCLICK(SESSION,BY,PATH,URL,INIT,WAIT)
BROWSERFIELD(SESSION,BY,PATH,VALUE,URL,INIT,WAIT)
BROWSERFORM(SESSION,FORM,URL,INIT,WAIT)
BROWSERCONTENT(SESSION,URL,ENCODING)
Creation of a Calc formula allowing HTTP Basic Auth authentication for HTTP requests:
HTTPAUTH(NAME,PASSWORD)
Calc formula GETHTTPBOBY
has been renamed to HTTPCONTENT
.
Modification of the idl files: XRequestParameter.idl and XRequestResponse.idl and the underlying python implementations: requestparameter.py and requestresponse.py in order to make it possible POST requests with application/x-www-form-urlencoded encoding. See issue #13.
3 macros in BASIC: ChatGPTRequest
, HTTPGetRequest
and HTTPPostRequest
are available in: Tools -> Macros -> Run Macros… -> My Macros -> OAuth2OOo. Be careful, these macros will not work if no document is open (I don’t know why?)…
From now on, with each push, a workflow perform a scan on the code with Fluid Attacks. This has been implemented to follow the Cloud Application Security Assessment (CASA) and meet the requirements for revalidation of the OAuth2OOo extension with Google.
For the same reasons, the Data Protection Policy has been modified in order to specify the Nature and scope rights over your data.
create()
without parameter, returns an instance of the service.createWithOAuth2([in] string sUrl, [in] string sUser)
with an Url and the user’s address, returns an instance of the service with the OAuth2 protocol.GoogleAPIRequest
and GraphAPIRequest
allow you to make HTTP requests on the Google Contact and Microsoft Graph APIs.isAuthorized()
to the XOAuth2Service interface supported by the OAuth2Service service. This method allows you to launch the OAuth2 configuration Wizard if the user is not authorized.sudo -i pip3 install requirements.txt
Headers
property in the implementation of the UNO interface XRequestResponse allowing to obtain the headers of an HTTP response.lxml
, ijson
, cffi
and charset-normalizer
packages.oauth20
. This should also resolve issue #15.Updating all these Python packages should make it possible to use Python 3.8, 3.9, 3.10, 3.11 and 3.12 under ManyLinux x86_64 architecture.
For win32 and win_amd64 architectures, only Python version 3.8 is supported. This means that since Python is embedded into LibreOffice for these architectures, only LibreOffice versions 7.x and 24.x are supported.
If your architecture is not yet supported by OAuth2OOo (Mac OSX, arm…), I advise you to open an issue so that I can add the missing binaries.
Add new language for internationalization…
Anything welcome…