扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
我正在尝试从我的shopify应用程序发出请求,将方法发布到我的后端,即laravel和我的前端vue.js,我正在使用Inertia,我明白了。
为了澄清问题是什么以及如何解决,首先我认为有人会面临与我相同的问题,因此我认为不需要任何代码,因为这基本上是非常自我的错误解释说会话令牌已过期,您还想要什么?
发生此错误的原因是 Shopify 正在 Iframe 中运行应用程序,并且发出请求的令牌不匹配,因此您必须手动将令牌添加到请求中。我建议在调用方法时始终获取令牌,因为令牌每次都会更改一会儿。我添加了一些代码示例,我如何使用 Vue.js、Laravel、Inertia.js、Axios 处理它
submit() { let sessionToken = getSessionToken(app); sessionToken.then((token) => { axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; axios.get(route('login',{'form' : this.form,'email':this.form.email,'password':this.form.password}) ).then( response => { console.log(token); Inertia.visit('/home', { method: 'get', only: ['auth'], headers: { 'Authorization': `Bearer ${token}`, }, }); }).catch(error => { alert(error); }); }); },
这是在我的 app.blade.php 中,我在 Osiset github 上找到了它,不确定这是否是最佳解决方案 https://github.com/osiset/laravel-shopify/issues/594
@if(\Osiset\ShopifyApp\Util::getShopifyConfig('appbridge_enabled')) <script src="https://unpkg.com/@shopify/app-bridge{{ \Osiset\ShopifyApp\Util::getShopifyConfig('appbridge_version') ? '@'.config('shopify-app.appbridge_version') : '' }}"></script> <script src="https://unpkg.com/@shopify/app-bridge-utils{{ \Osiset\ShopifyApp\Util::getShopifyConfig('appbridge_version') ? '@'.config('shopify-app.appbridge_version') : '' }}"></script> <script @if(\Osiset\ShopifyApp\Util::getShopifyConfig('turbo_enabled')) data-turbolinks-eval="false" @endif > var AppBridge = window['app-bridge']; var actions = AppBridge.actions; var utils = window['app-bridge-utils']; var createApp = AppBridge.default; var app = createApp({ apiKey: "{{ \Osiset\ShopifyApp\Util::getShopifyConfig('api_key', $shopDomain ?? Auth::user()->name ) }}", shopOrigin: "{{ $shopDomain ?? Auth::user()->name }}", host: "{{ \Request::get('host') }}", forceRedirect: true, }); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); </script> @include('shopify-app::partials.token_handler') @include('shopify-app::partials.flash_messages') @endif @inertia </body> <script> const getSessionToken = window['app-bridge-utils'].getSessionToken; </script>
或者,您可以禁用 csrf 令牌(不推荐)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部
为了澄清问题是什么以及如何解决,首先我认为有人会面临与我相同的问题,因此我认为不需要任何代码,因为这基本上是非常自我的错误解释说会话令牌已过期,您还想要什么?
发生此错误的原因是 Shopify 正在 Iframe 中运行应用程序,并且发出请求的令牌不匹配,因此您必须手动将令牌添加到请求中。我建议在调用方法时始终获取令牌,因为令牌每次都会更改一会儿。我添加了一些代码示例,我如何使用 Vue.js、Laravel、Inertia.js、Axios 处理它
这是在我的 app.blade.php 中,我在 Osiset github 上找到了它,不确定这是否是最佳解决方案 https://github.com/osiset/laravel-shopify/issues/594
或者,您可以禁用 csrf 令牌(不推荐)