Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Automate the oauth authentication without browser in cron utility

I am trying to upload some documents on Google drive, i want to run a cron script which is executed at mid night every day and the files generated as a result of it should be uploaded on the uses Google drive.

I tried the standalone script, which uploads document on Google drive, but for that i have to every time do allow access via browser.

However my purpose is to run a cron and upload the files, at the time the cron executes there will be no browser access.

Is there any way i can do the authentication process without manual intervention.

any help in this case would be really appreciated.

THanks,

like image 519
opensource-developer Avatar asked Nov 27 '13 12:11

opensource-developer


People also ask

Does OAuth require browser?

OAuth 2.0 requires a browser for user consent once A browser is required, so that the user can agree to the request of the app to access the users data. After the user agreed on sharing the data with the app, the app can use the refresh token without a browser based flow.

Can OAuth be automated?

A machine user can obtain OAuth2 tokens without having to specify a passcode. That means you can completely automate the process of obtaining and refreshing OAuth2 tokens by using the Edge API.

Is OAuth and autho same?

OAuth 2.0 is a standardized authorization protocol, Auth0 is a company that sells an identity management platform with authentication and authorization services that implements the OAuth2 protocol (among others). Save this answer.

What is the alternative to OAuth?

OpenID Connect, Auth0, JSON Web Token, Keycloak, and Amazon Cognito are the most popular alternatives and competitors to OAuth2.


2 Answers

you can authorize your App(script) with Google Drive.

Here, you mentioned you are writing a script which upload docs to your Google Drive. I suggest you register a app in Google Cloud Console to get client ID and client Secret firstly, and turn on Drive API for you registered App.

Then use this client ID and Secret to run oauth flow in your script to get an access token and refresh token, the access token's lifespan is about 3600s, and if it's expired, you can also get a new one with the refresh token.

User's interaction(consent) is required only in the first time you request access token.

In this way, your script can work in "a real script way".

Here are some reference: https://developers.google.com/drive/about-auth https://developers.google.com/accounts/docs/OAuth2InstalledApp?hl=zh-CN

like image 193
Owen Cao Avatar answered Sep 16 '22 16:09

Owen Cao


I am assuming its only one user drive account you are uploading to. Have you considered using a service account fo this? https://developers.google.com/drive/service-accounts

If its not a single user account you are uploading you can just save the refresh token some place and use that to get a new authtoken every night.

like image 29
DaImTo Avatar answered Sep 17 '22 16:09

DaImTo