mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
feat(Shopify Node): Add OAuth support (#3389)
* ⚡ wip * ⚡ Add includeAccessTokenInHeader option to OAuth2 * 🔨 fixed build error, fixed trigger node when using token auth * 🔨 fixed trigger when using oauth2 * 🔨 changed default auth method to access token * ⚡ Improvements * ⚡ Improvements * ⚡ Improvements * ⚡ Rename includeAccessTokenInHeader to keyToIncludeInAccessTokenHeader * ⚡ Assign values to only header property * 🔥 Remove unreachable code * ⚡ Add keyToIncludeInAccessTokenHeader when isN8nRequest * ⚡ Add CC grant type when isN8nRequest Co-authored-by: Ricardo Espinoza <ricardo@n8n.io> Co-authored-by: ricardo <ricardoespinoza105@gmail.com> Co-authored-by: Jan Oberhauser <janober@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import {
|
||||
IAuthenticateGeneric,
|
||||
ICredentialTestRequest,
|
||||
ICredentialType,
|
||||
INodeProperties,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
export class ShopifyAccessTokenApi implements ICredentialType {
|
||||
name = 'shopifyAccessTokenApi';
|
||||
displayName = 'Shopify Access Token API';
|
||||
documentationUrl = 'shopify';
|
||||
properties: INodeProperties[] = [
|
||||
{
|
||||
displayName: 'Shop Subdomain',
|
||||
name: 'shopSubdomain',
|
||||
required: true,
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Only the subdomain without .myshopify.com',
|
||||
},
|
||||
{
|
||||
displayName: 'Access Token',
|
||||
name: 'accessToken',
|
||||
required: true,
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
{
|
||||
displayName: 'APP Secret Key',
|
||||
name: 'appSecretKey',
|
||||
required: true,
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Secret key needed to verify the webhook when using Shopify Trigger node',
|
||||
},
|
||||
];
|
||||
authenticate: IAuthenticateGeneric = {
|
||||
type: 'generic',
|
||||
properties: {
|
||||
headers: {
|
||||
'X-Shopify-Access-Token': '={{$credentials?.accessToken}}',
|
||||
},
|
||||
},
|
||||
};
|
||||
test: ICredentialTestRequest = {
|
||||
request: {
|
||||
baseURL: '=https://{{$credentials?.shopSubdomain}}.myshopify.com/admin/api/2019-10',
|
||||
url: '/products.json',
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
import {
|
||||
ICredentialType,
|
||||
INodeProperties,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
export class ShopifyOAuth2Api implements ICredentialType {
|
||||
name = 'shopifyOAuth2Api';
|
||||
extends = [
|
||||
'oAuth2Api',
|
||||
];
|
||||
displayName = 'Shopify OAuth2 API';
|
||||
documentationUrl = 'shopify';
|
||||
properties: INodeProperties[] = [
|
||||
{
|
||||
displayName: 'Shop Subdomain',
|
||||
name: 'shopSubdomain',
|
||||
required: true,
|
||||
type: 'string',
|
||||
default: '',
|
||||
description: 'Only the subdomain without .myshopify.com',
|
||||
},
|
||||
{
|
||||
displayName: 'Grant Type',
|
||||
name: 'grantType',
|
||||
type: 'hidden',
|
||||
default: 'authorizationCode',
|
||||
},
|
||||
{
|
||||
displayName: 'Client ID',
|
||||
name: 'clientId',
|
||||
type: 'string',
|
||||
default: '',
|
||||
required: true,
|
||||
hint: 'Be aware that Shopify refers to the Client ID as API Key',
|
||||
},
|
||||
{
|
||||
displayName: 'Client Secret',
|
||||
name: 'clientSecret',
|
||||
type: 'string',
|
||||
typeOptions: {
|
||||
password: true,
|
||||
},
|
||||
default: '',
|
||||
required: true,
|
||||
hint: 'Be aware that Shopify refers to the Client Secret as API Secret Key',
|
||||
},
|
||||
{
|
||||
displayName: 'Grant Type',
|
||||
name: 'grantType',
|
||||
type: 'hidden',
|
||||
default: 'authorizationCode',
|
||||
},
|
||||
{
|
||||
displayName: 'Authorization URL',
|
||||
name: 'authUrl',
|
||||
type: 'hidden',
|
||||
default: '=https://{{$self["shopSubdomain"]}}.myshopify.com/admin/oauth/authorize',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
displayName: 'Access Token URL',
|
||||
name: 'accessTokenUrl',
|
||||
type: 'hidden',
|
||||
default: '=https://{{$self["shopSubdomain"]}}.myshopify.com/admin/oauth/access_token',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
displayName: 'Scope',
|
||||
name: 'scope',
|
||||
type: 'hidden',
|
||||
default: 'write_orders read_orders write_products read_products',
|
||||
},
|
||||
{
|
||||
displayName: 'Auth URI Query Parameters',
|
||||
name: 'authQueryParameters',
|
||||
type: 'hidden',
|
||||
default: 'access_mode=value',
|
||||
},
|
||||
{
|
||||
displayName: 'Authentication',
|
||||
name: 'authentication',
|
||||
type: 'hidden',
|
||||
default: 'body',
|
||||
},
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user