This document hopefully helps troubleshoot authentication troubles. If anything is not covered, please raise an issue on GitHub.
Donal Phipps has a helpful
video on how to set up your own Google Project client ID and secret via
this link -
its for googleAnalyticsR
but applies for all
googleAuthR
packages.
Generally, successful authentication needs the following in place:
A lot of the time the first two are set by the package and the end user does not need to worry about them. They are set via these options:
options("googleAuthR.client_id")
and
options("googleAuthR.client_secret")
options("googleAuthR.scopes.selected")
googleAuthR::gar_auth()
Once authentication has been done, then the authentication details
are kept in a cache file, which by default is called
.httr-oauth
and appears in your working directory.
This file location is set via
options("googleAuthR.httr_oauth_cache")
, or when you pass a
filename to gar_auth(token = "filename")
it will set it to
the filename
you pass in.
At the same time a token is written to the R session into a global object, for use in the functions. On any restart of the R session, or if the token expires (default 60 mins) the cache file is looked for to reload it into the R session.
Several libraries wrap googleAuthR::gar_auth()
with
presets, so you don’t call them directly e.g. ga_auth()
in
googleAnalyticsR
. Use googleAuthR::gar_auth()
instead of native authentication function if you want more control.
If you call googleAuthR::gar_auth()
then it will look
for a cache token given by
options("googleAuthR.httr_oauth_cache")
or the filename you
pass in - if not present it will trigger the OAuth2 flow.
If you call googleAuthR::gar_auth("token_name")
then it
will look for a cache token given by "token_name"
and
set the options("googleAuthR.httr_oauth_cache")
to
"token_name"
. This means refreshes etc. will be to
that token cache file. It will also set the client ID, client secret and
scopes to that specified in the file.
If for any reason any of the above change inbetween you authenticating and calling the API, then you may get an error or need to reauthenticate.
options("googleAuthR.client_id")
or
options("googleAuthR.client_secret")
are changed by loading
another library or setting them in a script, and then a cache file is
used with different options set.gar_auth_service()
make sure the service email is an
authenticated user with the service you are trying to access, and your
Google Project has the right API turned on.Error in init_oauth_service_account(self$secrets, scope = self$params$scope, : Bad Request (HTTP 400).
then your auth request is probably malformed. Check you have set the
scopes and clientID/secret correctly.googleAuthR::gar_token_info(2)
to check your
current token, and validate it with
googleAuthR::gar_check_existing_token()
which should return
TRUE
. Make sure it matches your expectations.library(googleAnalyticsR)
options(googleAuthR.client_id = "XXXX", googleAuthR.client_secret = "XXXX")
## wraps `googleAuthR::gar_auth()`
ga_auth()
GAR_AUTH
or package supported ones.gar_auth("my_token.httr-oauth")
GAR_CLIENT_JSON
and use gar_set_client()