我使用Koa,Nextjs tho制作了Shopify应用,但出现此错误
appbridgeError: APP::ERROR::INVALID_CONFIG: shopOrigin must be provided
应用行为有点奇怪,因为当我第一次访问时,它运行良好。
但是,几个小时后,我得到了这个错误。然后我研究了这个问题,找到了案例。几个小时后,MyApp类中的Cookies.get("shopOrigin")
将为空。
[server.js的代码部分]
....................
....................
app.prepare()
.then(() => {
var httpServer = http.createServer(serverCallback);
// var httpsServer = https.createServer(config.https.options, serverCallback);
server.use(session({ secure: true, sameSite: 'none' }, server));
server.keys = [SHOPIFY_API_SECRET_KEY];
server.use(
createShopifyAuth({
apiKey: SHOPIFY_API_KEY,
secret: SHOPIFY_API_SECRET_KEY,
scopes: [
'read_products','write_products',
'read_orders', 'write_orders',
'read_customers', 'write_customers',
'read_script_tags', 'write_script_tags'
],
afterAuth(ctx) {
const { shop, accessToken } = ctx.session;
ACCESS_TOKEN = accessToken
ctx.cookies.set('shopOrigin', shop, {
httpOnly: false,
secure: true,
sameSite: 'none',
});
ctx.redirect('/');
},
}),
);
server.use(graphQLProxy({version: ApiVersion.October19}))
server.use(verifyRequest());
server.use(async (ctx) => {
await handle(ctx.req, ctx.res);
ctx.respond = false;
ctx.res.statusCode = 200;
return
});
....................
....................
[_ app.js]
....................
....................
class MyApp extends App {
render() {
const { Component, pageProps } = this.props;
const config = { apiKey: API_KEY, shopOrigin: Cookies.get("shopOrigin"), forceRedirect: true };
console.log(`config`)
console.log(config)
return (
<React.Fragment>
<Head>
<title>My LA Meats</title>
<meta charSet="utf-8" />
</Head>
<Provider config={config}>
<AppProvider i18n={translations}>
<ApolloProvider client={client}>
<Component {...pageProps} />
</ApolloProvider>
</AppProvider>
</Provider>
</React.Fragment>
);
}
}
....................
....................
我想这是cookie的问题,我无法确认。你们有同样的问题吗?如果您知道我应该如何解决此问题,请告诉我。
答案 0 :(得分:1)
更改0行代码后,我遇到了完全相同的错误,这似乎是由于shopOrigin
cookie是HttpOnly引起的。为了确认这一点,我将尝试在控制台中运行类似document.cookie
的程序,并查看shopOrigin cookie是否显示。
在我的情况下,该cookie在chrome和firefox中可见,一旦取消了shopOrigin cookie的HttpOnly列,便能够加载我的应用程序。但是,这是一个临时修复程序,因为在chrome重新启动后,cookie会重置为HttpOnly。这令人困惑,因为server.js中的createShopifyAuth()
函数显式创建了cookie,因此它不是HttpOnly。
如果找到解决方法,请告诉我。