Search code examples
google-apigoogle-oauthgoogle-api-js-client

Google javascript api client, automatically login to same account without popup


Is there a way to automatically authenticate the google javascript api client, without user interaction?

Something like this: User loads webpage -> webpage automatically signs in into a predefined user account -> api calls get executed

Basically i want to prevent the popup where you have to select an account and sign in to it. As the account which will be signed in is always the same.

EDIT:

pinoyyid answer looks promising and is what im looking for. But this only works if the user has signed in with an account at least once, if im not mistaken.

Now i dont want to use an account supplied by the user, but a predefined account which i am the owner of and sign this account in.

Im not entirely sure if this is even possible, as i have to provide the password/some authentication code to google and somehow do this in a secure way.

Use Case: The website will create a Youtube Broadcast via the Youtube Data/Livestream API for the specified account.


Solution

  • Yes you can do that. Referring to https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow there are three pieces of information that will get you where you want to be:-

    1. The OAuth URL can include a login_hint which is the email of your intended user
    2. The OAuth URL can also include prompt=none which will do its work silently
    3. This all needs to run in an iframe because this is based on origins and redirects.

    ==EDIT==

    If the requirement is for a browser client to connect to a Google Account other than that of the browser user, then this is not possible. It's kinda obvious really that to do so would require a credential in the browser which by definition is not a secure environment.

    The approach I would take would be to use a service such as Lambda or Google Cloud Functions (or whatever marketing name they have this week) to create a proxy for the corresponding Google API using a credential stored server-side.