Я создаю общедоступное приложение shopify и хочу добавить POST-маршрут, который позволяет создавать метаполе.
В модуле shopify-api-node
указано следующее:
accessToken
- Требуется для общедоступных приложений. - Строка, представляющая маркер постоянного доступа OAuth 2.0. Этот параметр является взаимоисключающим с параметрами apiKey и пароля. Если вы ищете готовое решение для получения токена доступа, взгляните на модуль shopify-token . "
Вот объект, которому нужны shopName
и accessToken
const shopify = new Shopify({
shopName: 'your-shop-name',
accessToken: 'your-oauth-token'
});
В документации Shopify Node / Express вы добавляете в /shopify/callback
маршрут, который включает 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
следующим образом (см. Ниже)? Или есть лучший способ сделать это / можете привести примеры?
Server.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.log(metafield),
err => console.error(err)
);
})