我正在构建一个公共shopify应用,我想添加一个允许创建元字段的POST路由。
在shopify-api-node
module中指出:
accessToken
-公共应用程序必需-表示永久性OAuth 2.0访问令牌的字符串。此选项与apiKey和password选项互斥。如果您正在寻找用于获取访问令牌的预制解决方案,请查看shopify-token module。”
这里是需要shopName
和accessToken
const shopify = new Shopify({
shopName: 'your-shop-name',
accessToken: 'your-oauth-token'
});
在Shopify Node / Express文档中,您添加了/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
路由访问/应该访问此信息吗?还是有更好的方法来做到这一点/您可以提供示例吗?
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)
);
})
答案 0 :(得分:0)
这不是使用商店访问令牌的正确方法
因为shopify/callback
仅在商店管理员安装您的应用程序时进行一次网址调用,但是在大多数情况下访问令牌很有用
要为您的系统使用商店访问令牌,您可以执行以下操作
shopify/callback
API调用,当您由商店管理员安装的应用程序此时可以将此访问令牌存储在数据库中,并且仅需要从数据库中获取该访问令牌并且该访问令牌可以终身使用,直到商店管理员未卸载即可您的应用程序