我正在构建一个公共shopify应用程序,我想添加一个允许创建元字段的POST路由。
在“shopify-api-node 模块”中,如下所述:
accessToken -公共应用程序所需的字符串-表示永久OAuth 2.0访问令牌的字符串。此选项与apiKey和密码选项相互排斥。如果您正在寻找一个预先制定的解决方案来获取访问令牌,请查看shopify-令牌模块。“
下面是需要shopName和accessToken的对象
const shopify = new Shopify({
shopName: 'your-shop-name',
accessToken: 'your-oauth-token'
});在交汇点/快车文档中,您可以在/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)
);
})发布于 2019-05-11 05:24:44
这不是使用存储访问令牌的正确方式。
因为shopify/callback url只在商店管理员安装应用程序时调用一次,但是访问令牌在大多数情况下都是有用的。
若要为系统使用存储访问令牌,请执行以下操作
当您的应用程序通过商店管理员安装时,您可以将该访问令牌存储在数据库中,并且当它只需要从db获取该访问令牌时,这个访问令牌可以终身访问,直到存储管理没有卸载您的应用程序。
https://stackoverflow.com/questions/56080104
复制相似问题