The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

SYNOPSIS

Script to create an OAuth2 token that can be stored and used later to authorize our REST API access.

Based on code from https://gist.github.com/hexaddikt/6738162

To create a config file for use as a perl script:

    1. Read over https://stackoverflow.com/questions/11485271/google-oauth-2-authorization-error-redirect-uri-mismatch
       It has a lot of useful background information.
    
    2. Obtain a client_id and client_secret from your Google Developer's console page.
      a. Go to https://console.cloud.google.com/apis/dashboard, sign in,
         and create a project.
      b. Go to the 'Credentials' tab on the left, and then '+ Create Credientials'
         at the top of the screen and select 'OAuth client ID' from the dropdown.
      c. Select 'Desktop app' (for a simple script) or 'Web application' (for a web
         site). The rest of these instructions pertain to the easier 'Desktop app'.
         It's best to get this more simple config working first, then move to more
         complex setups once you're familiar with the process.
      d. Pick a name for your script app and click on 'Create'. Copy the 'Client ID'
         and 'Client Secret' for the next step.
    3. Create a yaml file with the following format:
      ---
      auth:
          class: OAuth2Client
          client_id: <client-id-from-google>
          client_secret: <client-secret-from-google>
          token_file: <file-name-to-store-your-generated-token> # just file name, not path.
    The token file will be stored in the same directory as the config file.
    
    Once this process is complete, this same config file will be used by this package
    to access the Google API.
    
    4. Run this script with the first arg pointing to the yaml file above, and follow
       the directions on the screen, which will take you through the following steps:
      a. Copy the URL printed out, and paste the URL in a browser to load the page. 
      b. On the resulting page, click OK (possibly after being asked to log in to
         your Google account). 
      c. You will be redirected to a page that provides a string that you should copy
         and paste back into the terminal window, so this script can exchange it for
         an access token from Google, and store the token. That will be the token for
         this package.
      
      5. Once you have the YAML config file and token file created, you can now use them with
         this package:
        use Google::RestApi;
        my $rest_api = new Google::RestApi->new(config_file => <path to config file>);
      See Google::RestApi doc for further information on how to initialize this object
      with the token file.