From ca242c36a5b4a556a422b2c8156cd65767a8bd16 Mon Sep 17 00:00:00 2001 From: Deborah Barnard Date: Tue, 27 Sep 2022 17:14:03 +0100 Subject: [PATCH] google creds and expanding text --- .../builtin/credentials/google/enable-apis.md | 4 + docs/_extra/css/extra.css | 21 +++ .../credentials/google/oauth_callback.png | Bin 42879 -> 18811 bytes docs/credentials/add-edit-credentials.md | 2 +- .../builtin/credentials/google.md | 144 ++++++++++++------ 5 files changed, 123 insertions(+), 48 deletions(-) create mode 100644 _snippets/integrations/builtin/credentials/google/enable-apis.md diff --git a/_snippets/integrations/builtin/credentials/google/enable-apis.md b/_snippets/integrations/builtin/credentials/google/enable-apis.md new file mode 100644 index 000000000..13b6873d4 --- /dev/null +++ b/_snippets/integrations/builtin/credentials/google/enable-apis.md @@ -0,0 +1,4 @@ +1. Access your [Google Cloud Console](https://console.cloud.google.com){:target=_blank .external-link}. +2. From the hamburger menu, select **APIs & Services > Library**. +3. Search for and select the API(s) you want to enable. +5. Select **ENABLE**. diff --git a/docs/_extra/css/extra.css b/docs/_extra/css/extra.css index 10ce2bef6..d891eb09c 100644 --- a/docs/_extra/css/extra.css +++ b/docs/_extra/css/extra.css @@ -27,9 +27,30 @@ /* https://squidfunk.github.io/mkdocs-material/setup/changing-the-fonts/?h=font#additional-fonts */ --md-text-font: "Moderat-Regular-Web"; + /* https://squidfunk.github.io/mkdocs-material/reference/admonitions/#custom-admonitions */ + --md-admonition-icon--details: url('data:image/svg+xml;charset=utf-8,'); } + + /* https://squidfunk.github.io/mkdocs-material/reference/admonitions/#custom-admonitions */ + .md-typeset .admonition.details, + .md-typeset details.details { + border-color: var(--color-background-dark); + } + .md-typeset .details > .admonition-title, + .md-typeset .details > summary { + background-color: rgba(16,19,48, 0.1); + } + .md-typeset .details > .admonition-title::before, + .md-typeset .details> summary::before { + background-color: rgb(16,19,48); + -webkit-mask-image: var(--md-admonition-icon--details); + mask-image: var(--md-admonition-icon--details); + } + + + /* light mode */ diff --git a/docs/_images/integrations/builtin/credentials/google/oauth_callback.png b/docs/_images/integrations/builtin/credentials/google/oauth_callback.png index 4d858a58811d71fa6679260a846c0f54c3520d76..28386d6d71e145d116e110cb41efcb703dcff43c 100644 GIT binary patch literal 18811 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 literal 42879 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 l89&klKo~LGW;~)L1CJg`p diff --git a/docs/credentials/add-edit-credentials.md b/docs/credentials/add-edit-credentials.md index a14f9c938..e4e7de13a 100644 --- a/docs/credentials/add-edit-credentials.md +++ b/docs/credentials/add-edit-credentials.md @@ -2,7 +2,7 @@ You can get to the credential modal by either: -* Opening the left menu, then selecting **Credentials** > **Add credential**. +* Opening the left menu, then selecting **Credentials** > **New** and browsing for the service you want to connect to. * Selecting **Create New** in the **Credential** dropdown in a node. Once in the credential modal, enter the details required by your service. Refer to your service's page in the [credentials library](/integrations/builtin/credentials/) for guidance. diff --git a/docs/integrations/builtin/credentials/google.md b/docs/integrations/builtin/credentials/google.md index 420f374b7..6257c81de 100644 --- a/docs/integrations/builtin/credentials/google.md +++ b/docs/integrations/builtin/credentials/google.md @@ -1,6 +1,6 @@ # Google -There are two authentication methods available for Google services nodes, [OAuth2](https://developers.google.com/identity/protocols/oauth2) and the [Service Account](https://developers.google.com/identity/protocols/oauth2#serviceaccount) authentication. Refer to the official Google documentation to learn which is appropriate for your case case. +There are two authentication methods available for Google services nodes, [OAuth2](https://developers.google.com/identity/protocols/oauth2){:target=_blank .external-link} and [Service Account](https://cloud.google.com/iam/docs/understanding-service-accounts){:target=_blank .external-link}. Usually, n8n recommends using OAuth. It's more widely available, and easier to set up. Refer to the [Google documentation: Understanding service accounts](https://cloud.google.com/iam/docs/understanding-service-accounts){:target=_blank .external-link} for guidance on when you need service account. Most nodes are [compatible](#compatible-nodes) with OAuth2 authentication. Support for Service Account authentication is limited. @@ -41,7 +41,7 @@ Once configured, you can use your credentials to authenticate the following node | [YouTube](/integrations/builtin/app-nodes/n8n-nodes-base.youTube/) | :white_check_mark: | :x: | !!! note "Note for n8n Cloud users" - For the following nodes, you only need to enter the **Credentials Name** and click on the **Sign in with Google** button in the OAuth section to connect your Google account to n8n: + For the following nodes, you can authenticate by entering the **Credentials Name** and selecting **Sign in with Google** in the OAuth section to connect your Google account to n8n: * [Google Calendar](/integrations/builtin/app-nodes/n8n-nodes-base.googleCalendar/) * [Google Contacts](/integrations/builtin/app-nodes/n8n-nodes-base.googleContacts/) @@ -51,31 +51,40 @@ Once configured, you can use your credentials to authenticate the following node ## Using OAuth -From your [Google Cloud Console](https://console.cloud.google.com){:targe=_blank .external-link} dashboard: +### Create a new credential in n8n -1. Click on the hamburger menu and select **APIs & Services > Credentials**. -2. Click on **+ CREATE CREDENTIALS** and select **OAuth client ID**. +1. Follow the steps to [Create a credential](/credentials/add-edit-credentials/). If you create a credential by selecting **Create new** in the credentials dropdown in a node, n8n automatically creates the correct credential type for that node. If you select **Credentials > New**, you must browse for the credential type: + * To connect with a specific service, using resources and operations supported by n8n, choose that service. For example, to create a credential for use in the Gmail node, search for `Gmail`. + * To create a credential for a [custom API call](/integrations/custom-operations/), select **Google OAuth2 API**. This allows you to create a generic credential, then set its scopes. +2. Note the **OAuth Redirect URL** from the node credential modal. You'll need this in the next section. +![OAuth Callback URL](/_images/integrations/builtin/credentials/google/oauth_callback.png) +3. If you're creating a generic Google OAuth2 API credential (rather than a credential for a specific service), you must provide the scopes for this credential. Refer to [Scopes](#scopes) for more information. - !!! note "Note for new users" - If you're creating OAuth credentials for the first time, you will have to [configure the consent screen](https://support.google.com/cloud/answer/10311615?hl=en&ref_topic=3473162){:targe=_blank .external-link}. +### Set up OAuth in Google Cloud + +In your [Google Cloud Console](https://console.cloud.google.com){:targe=_blank .external-link} dashboard: + +1. Select the hamburger menu **> APIs & Services > Credentials**. Google takes you to your **Credentials** page. +2. Select **+ CREATE CREDENTIALS > OAuth client ID**. + + !!! note "New users" + If you're creating OAuth credentials for the first time, you must [configure the consent screen](https://support.google.com/cloud/answer/10311615?hl=en&ref_topic=3473162){:target=_blank .external-link}. +3. In the **Application type** dropdown, select **Web application**. Google automatically generates a name. +4. In Google Cloud, select **+ ADD URI**. Paste in the OAuth redirect URL from the previous step. +5. Select **CREATE**. +6. Enable each Google service API that you want to use: + --8<-- "_snippets/integrations/builtin/credentials/google/enable-apis.md" -3. From the **Application type** dropdown select **Web application**. A name is automatically generated, change it if desired. -4. From the **Authorized redirect URIs** section, select **+ Add URI**. -5. Enter the **OAuth Callback URL** provided in the Google node credential modal: - ![OAuth Callback URL](/_images/integrations/builtin/credentials/google/oauth_callback.png) -6. Click the **CREATE** button. +### Create and test your connection -From your n8n instance: +In n8n: -7. Enter your new **Client ID** and **Client Secret** from Google Cloud Console in the n8n Credentials modal. -8. Enter a **Credentials Name**. -9. Click on the **Sign in with Google** button to complete your Google authentication. -10. **Save** your new credentials in n8n. +1. Enter your new **Client ID** and **Client Secret** from Google Cloud Console in the credentials modal. +2. Select **Sign in with Google** to complete your Google authentication. +3. **Save** your new credentials. -Now you must [enable](#enable-apis) each Google service API that you want to use. - -The following video demonstrates the steps mentioned above. +The following video demonstrates the steps described above:
@@ -83,48 +92,89 @@ The following video demonstrates the steps mentioned above. ## Using Service Account -From your [Google Cloud Console](https://console.cloud.google.com){:targe=_blank .external-link} dashboard: +Using service accounts is more complex than OAuth2. Before you begin: -1. Click on the hamburger menu and select **APIs & Services > Credentials**. -2. Click on **+ CREATE CREDENTIALS** and select **Service account**. -3. Enter a name in the **Service account name** field. -4. Click on the **CREATE** button. +* Make sure you really need to use service account. For most use cases, OAuth2 is a better option. +* Read the Google documentation on [Creating and managing service accounts](https://cloud.google.com/iam/docs/creating-managing-service-accounts){:target=_blank .external-link}. + +### Create a new credential in n8n + +1. Follow the steps to [Create a credential](/credentials/add-edit-credentials/). + + !!! note "Generic and specific credentials" + If you create a credential by selecting **Create new** in the credentials dropdown in a node, n8n automatically creates the correct credential type for that node. If you select **Credentials > New**, you must browse for the credential type: + + * To connect with a specific service, using resources and operations supported by n8n, choose that service. For example, to create a credential for use in the Gmail node, search for `Gmail`. + * To create a credential for a [custom API call](/integrations/custom-operations/), select **Google API**. + +2. Note the **Private Key** from the node credential modal. You'll need this in the next section. + +### Set up service account in Google Cloud + +In your [Google Cloud Console](https://console.cloud.google.com){:target=_blank .external-link} dashboard: + +1. Select the hamburger menu **> APIs & Services > Credentials**. Google takes you to your **Credentials** page. +2. Select **+ CREATE CREDENTIALS > Service account**. +3. Enter a name in **Service account name**, and an ID in **Service account ID**. Refer to [Creating a service account](https://cloud.google.com/iam/docs/creating-managing-service-accounts?hl=en#creating){:target=_blank .external-link} for more information. +4. Select **CREATE AND CONTINUE**. 5. Based on your use-case, you may want to **Select a role** and **Grant users access to this service account** using the corresponding sections. -6. Click **Done**. -7. Select your newly created service account under the **Service Accounts** section and open the **Keys** tab. -8. Click on **ADD KEY** and select **Create new key**. -9. In the modal that appears, select **JSON** and click **Create**. n8n saves the file to your computer. +6. Select **DONE**. +7. Select your newly created service account under the **Service Accounts** section. Open the **KEYS** tab. +8. Select **ADD KEY > Create new key**. +9. In the modal that appears, select **JSON**, then select **CREATE**. Google saves the file to your computer. +10. Enable each Google service API that you want to use: + --8<-- "_snippets/integrations/builtin/credentials/google/enable-apis.md" -From you n8n instance: +### Create and test your connection -10. Enter a **Credentials Name**. -11. In the **Service Account Email** field, enter the email associated with your new Service Account (visible in the **Details** tab). -12. Enter the **Private Key** from the downloaded JSON file. If you are running an n8n version older than 0.156.0: replace all instances of `\n` in the JSON file with new lines. -13. Optional: Click the toggle to enable [**Impersonate a User**](https://developers.google.com/identity/protocols/oauth2/service-account#delegatingauthority){:targe=_blank .external-link} and enter the desired email. -14. **Save** your credentials. +In n8n: -Now you must [enable](#enable-apis) each Google service API that you want to use. +1. In the **Service Account Email** field, enter the email associated with your new Service Account (you can find this in the **Details** tab in Google Cloud). +2. Enter the **Private Key** from the downloaded JSON file. If you're running an n8n version older than 0.156.0: replace all instances of `\n` in the JSON file with new lines. +3. **Optional**: Click the toggle to enable [**Impersonate a User**](https://developers.google.com/identity/protocols/oauth2/service-account#delegatingauthority){:target=_blank .external-link} and enter the email. +4. **Save** your credentials. -The following video demonstrates the steps mentioned above. +The following video demonstrates the steps described above.
-## Enable APIs +## Scopes -To enable an API, follow the steps below: +Many Google services have multiple possible access scopes. A scope limits what a user can do. Refer to [OAuth 2.0 Scopes for Google APIs](https://developers.google.com/identity/protocols/oauth2/scopes){:target=_blank .external-link} for a list of scopes for all services. + +n8n doesn't support all scopes. When creating a generic Google OAuth2 API credential, you can enter scopes from the list. If you enter a scope that n8n doesn't already support, it won't work. + +??? Details "Supported scopes" + | Service | Available scopes | + | ------- | ---------------- | + | Gmail | https://www.googleapis.com/auth/gmail.labels
https://www.googleapis.com/auth/gmail.addons.current.action.compose
https://www.googleapis.com/auth/gmail.addons.current.message.action
https://mail.google.com/
https://www.googleapis.com/auth/gmail.modify
https://www.googleapis.com/auth/gmail.compose | + | Google Ads | https://www.googleapis.com/auth/adwords | + | Google Analytics | https://www.googleapis.com/auth/analytics
https://www.googleapis.com/auth/analytics.readonly | + | Google Big Query | https://www.googleapis.com/auth/bigquery | + | Google Books | https://www.googleapis.com/auth/books | + | Google Calendar | https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/calendar.events | + | Google Cloud Natural Language | https://www.googleapis.com/auth/cloud-language
https://www.googleapis.com/auth/cloud-platform | + | Google Cloud Storage | https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/cloud-platform.read-only
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_only
https://www.googleapis.com/auth/devstorage.read_write | + | Google Contacts | https://www.googleapis.com/auth/contacts | + | Google Docs | https://www.googleapis.com/auth/documents
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.file | + | Google Drive | https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.appdata
https://www.googleapis.com/auth/drive.photos.readonly | + | Google Firebase Cloud Firestore | https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/firebase | + | Google Firebase Realtime Database | https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/firebase.database
https://www.googleapis.com/auth/firebase | + | Google Perspective | https://www.googleapis.com/auth/userinfo.email | + | Google Sheets | https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/spreadsheets | + | Google Slide | https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/presentations | + | Google Tasks | https://www.googleapis.com/auth/tasks | + | Google Translate | https://www.googleapis.com/auth/cloud-translation | + | GSuite Admin | https://www.googleapis.com/auth/admin.directory.group
https://www.googleapis.com/auth/admin.directory.user
https://www.googleapis.com/auth/admin.directory.domain.readonly
https://www.googleapis.com/auth/admin.directory.userschema.readonly | -1. Access your [Google Cloud Console](https://console.cloud.google.com){:targe=_blank .external-link}. -2. From the hamburger menu select **APIs & Services > Library**. -3. Search for and select the API(s) you want to enable. -5. Click on the **ENABLE** button. ## Troubleshooting ### Google hasn't verified this app -If using the OAuth authentication method, you might come across the warning **Google hasn't verified this app**. To avoid this, you can create OAuth credentials from the same account you want to authenticate. However, if you're using credentials that were generated by another account (by a developer or another third party), do the following: +If using the OAuth authentication method, you might see the warning **Google hasn't verified this app**. To avoid this, you can create OAuth credentials from the same account you want to authenticate. However, if you're using credentials that were generated by another account (by a developer or another third party), do the following in Google Cloud: 1. Click on **Advanced**. 2. Click on **Go to CREDENTIALS_NAME (unsafe)**. `CREDENTIALS_NAME` is the name of the credentials created by the third party. @@ -132,10 +182,10 @@ If using the OAuth authentication method, you might come across the warning **Go ### Service Account cannot access Google Drive files -A Service Account can only access Google Drive files and folders that were shared with it's associated user email. +A Service Account can't access Google Drive files and folders that weren't shared with its associated user email. -1. Access your [Google Cloud Console](https://console.cloud.google.com){:targe=_blank .external-link} and copy your Service Account email. -2. Access your [Google Drive](https://drive.google.com){:targe=_blank .external-link} and go to the designated file or folder. +1. Access your [Google Cloud Console](https://console.cloud.google.com){:target=_blank .external-link} and copy your Service Account email. +2. Access your [Google Drive](https://drive.google.com){:target=_blank .external-link} and go to the designated file or folder. 3. Right-click on the file or folder and select **Share**. 4. Paste your Service Account email into **Add People and groups**. 5. Select **Editor** for read-write access or **Viewer** for read-only access.