Как передать токен доступа и название магазина в новый объект Shopify API Node

Я создаю общедоступное приложение для покупок и хочу добавить маршрут POST, который позволяет создать метаполе.

В shopify-api-nodeмодуль указано следующее:

accessToken — требуется для общедоступных приложений — строка, представляющая постоянный токен доступа OAuth 2.0. Этот параметр является взаимоисключающим с параметрами apiKey и password. Если вы ищете готовое решение для получения токена доступа, взгляните на модуль shopify-token».

Вот объект, которому нужны shopName и accessToken

const shopify = new Shopify({
                shopName: 'your-shop-name',
                accessToken: 'your-oauth-token' 
            });

В документации Shopify Узел / Экспресс вы добавили /shopify/callback маршрут q, который включает Oauth:

// Shopify Callback Route //
        app.get('/shopify/callback', (req, res) => {
            const { shop, hmac, code, state } = req.query;
            /// ... skipping over code ... ///
            request.post(accessTokenRequestUrl, { json: accessTokenPayload })
                .then((accessTokenResponse) => {
                    const accessToken = accessTokenResponse.access_token;
                    // DONE: Use access token to make API call to 'shop' endpoint
                    const shopRequestUrl = 'https://' + shop + '/admin/api/2019-04/shop.json';
                    const shopRequestHeaders = {
                        'X-Shopify-Access-Token': accessToken,
                    };

                });
             /// ... skipping over code ... ///
        });

Могу ли я получить/должен ли я получить доступ к этой информации из маршрута shopify-token module вместо использования /shopify/callback следующим образом (см. ниже)? Или есть лучший способ сделать это/можете привести примеры?

Сервер.js

// Declare new global variables //
var accessTokenExport;
var shopExport;

// New Function //
 function exportTokens(accessToken) {
                accessTokenExport = accessToken;
                shopExport = shop;
            }
// Shopify Callback Route //
        app.get('/shopify/callback', (req, res) => {

        // Export variables to New Function
        exportTokens(shop, accessToken); 
        });
// New POST route //
 app.post("/api/createMetafield", function (req, res) {

                const shopify = new Shopify({
                    shopName: shopExport,
                    accessToken: accessTokenExport
                });

                shopify.metafield.create({
                    key: 'warehouse',
                    value: 25,
                    value_type: 'integer',
                    namespace: 'inventory',
                    owner_resource: 'metafield',
                    // owner_id: 632910392 
                }).then(
                    metafield => console.info(metafield),
                    err => console.error(err)
                );

            })

Привет, хранить токен доступа в БД легко, но когда вы получаете запрос на call_back_url, как вы читаете соответствующий access_token из БД? пожалуйста, помогите

Aqeel 27.01.2021 08:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
1 696
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это неправильный способ использования токена доступа к магазину.

Потому что shopify/callback URL-адрес вызывается только один раз, когда администратор магазина устанавливает ваше приложение, но токен доступа полезен в большинстве случаев.

Чтобы использовать токен доступа к магазину для вашей системы, вы можете сделать следующее:

shopify/callback Вызов API, когда ваше приложение устанавливается администратором магазина, когда вы можете хранить этот токен доступа в базе данных, а когда требуется просто получить его из вашей БД, и этот токен доступа доступен на всю жизнь, пока администратор магазина не удалит ваше приложение.

Спасибо. Я забыл, что это должно было храниться в БД.

The1987 13.05.2019 05:40

отлично, если у вас есть решение, выберите правильный ответ для дальнейшего использования. Спасибо

Nisar Saiyed 13.05.2019 11:32

Должен ли я отправить его в БД после того, как был сделан request.post?

The1987 13.05.2019 15:42

Вы можете отправить в БД в методе request.post

Nisar Saiyed 14.05.2019 06:43

Насколько я знаю, когда вы сохраняете токен доступа, вы сохраняете его с именем магазина для дальнейшего использования. Я должен поднять вопрос об этой части ответа «когда требуется просто получить из вашей базы данных», но когда запрос попадает на shopify call_back_url, в нем нет адреса магазина, поэтому как мы можем просто получить этот токен из db для этого конкретного магазина?

Aqeel 27.01.2021 08:26

Другие вопросы по теме