如何将访问令牌和商店名称传递给 Shopify API 节点新对象
How to pass access token and shop name to Shopify API Node new object
我正在构建一个 public shopify 应用程序,我想添加一个允许创建元字段的 POST 路由。
在 shopify-api-node
module 中声明如下:
accessToken
- public 应用程序需要 - 表示永久 OAuth 2.0 访问令牌的字符串。此选项与 apiKey 和密码选项互斥。如果您正在寻找获取访问令牌的预制解决方案,请查看 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 ... ///
});
我可以 access/should 以下列方式(见下文)从 /shopify/callback
路由访问此信息,而不是使用 shopify-token module
吗?或者有没有更好的方法来做到这一点/你能提供例子吗?
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)
);
})
这不是使用商店访问令牌的正确方法
因为 shopify/callback
url 仅在商店管理员安装您的应用程序时调用一次,但访问令牌在大多数情况下都很有用
要为您的系统使用商店访问令牌,您可以执行以下操作
shopify/callback
API 当您的应用程序由商店管理员安装时调用,那时您可以将此访问令牌存储在数据库中,并且当它只需要从您的数据库中获取并且此访问令牌可终身访问时距离商店管理员不卸载您的应用程序的时间
我正在构建一个 public shopify 应用程序,我想添加一个允许创建元字段的 POST 路由。
在 shopify-api-node
module 中声明如下:
accessToken
- public 应用程序需要 - 表示永久 OAuth 2.0 访问令牌的字符串。此选项与 apiKey 和密码选项互斥。如果您正在寻找获取访问令牌的预制解决方案,请查看 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 ... ///
});
我可以 access/should 以下列方式(见下文)从 /shopify/callback
路由访问此信息,而不是使用 shopify-token module
吗?或者有没有更好的方法来做到这一点/你能提供例子吗?
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)
);
})
这不是使用商店访问令牌的正确方法
因为 shopify/callback
url 仅在商店管理员安装您的应用程序时调用一次,但访问令牌在大多数情况下都很有用
要为您的系统使用商店访问令牌,您可以执行以下操作
shopify/callback
API 当您的应用程序由商店管理员安装时调用,那时您可以将此访问令牌存储在数据库中,并且当它只需要从您的数据库中获取并且此访问令牌可终身访问时距离商店管理员不卸载您的应用程序的时间