Ich bin neu in der Shopify-App-Entwicklung. Ich habe eine App mit PHP-Vorlagen von shopify entwickelt. Es verwendet Laravel und React. Dies ist https://github.com/Shopify/shopify-app-template-php/tree/cli_third
Wenn ich npm run dev ausführe, wird die App im Dev Store ausgeführt.
Ich habe dann meine Anwendung auf einem AWS-Server mithilfe einer Domäne bereitgestellt (z. B. sub.mydomain.com).
Dann habe ich die App im Store installiert.
Die Seite wird in der App gerendert. Bei jeder GET- oder POST-Anfrage erhalte ich jedoch die Fehlermeldung 500.
Nach dem Debuggen habe ich diese Codezeile gefunden
$session = Utils::loadCurrentSession($request->header(), $request->cookie(), $isOnline);
Es wird eine Ausnahme ausgelöst, der Fehler ist:
ShopifyExceptionMissingArgumentException {#334 #message: "Missing Authorization key in headers array" #code: 0 #file: "/var/www/html/shopify-project/web/vendor/shopify/shopify-api/src/Auth/OAuth.php"
Aber in der Kopfzeile der Anfrage steht ein Autorisierungscode:
:authority: sub.mydomain.com :method: GET :path: /api/view-id :scheme: https accept: */* accept-encoding: gzip, deflate, br accept-language: en-US,en;q=0.9,ne;q=0.8 authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczpcL1wvcW9kZWFuYWx5dGljcy5teXNob3BpZnkuY29tXC9hZG1pbiIsImRlc3QiOiJodHRwczpcL1wvcW9kZWFuYWx5dGljcy5teXNob3BpZnkuY29tIiwiYXVkIjoiNDBhYWM4OWM0Yzc4YmJlMjE5ZDBmMWY3NWExZjJhZTciLCJzdWIiOiI4NDM4NjcwOTc2MSIsImV4cCI6MTY1NzgxOTUyOSwibmJmIjoxNjU3ODE5NDY5LCJpYXQiOjE2NTc4MTk0NjksImp0aSI6ImRhZTI1ZjViLWIxODgtNGZkOS05MjcwLWNkOWNlODQ3MDIyZCIsInNpZCI6IjJmNTJkOTcxNTgxMDc5YmYxYmI0NDNlZWY5MGM2YTI2OGEyMmRkY2ZlZmRhMDc2YzE4NTM5OGY3YzU4ZDJmYTgifQ.ASJOsmBb4kMZz-QiRzg60pzvwDaj4w5DbZRO8mcWt1U cache-control: no-cache pragma: no-cache referer: https://sub.mydomain.co/setup? hmac=633d1f9577273c7e7281dba9ca206037100dckjlkjb45ac7271674691acc6f7e6b3da&host=cW9kZWFuYWx5dGljcy5teXNob3BpZ54654nkuY29tL2FkbWlu&locale=en&session=78bbfd9e29b55c907762eba75a4a759f0691572c1f4661500f0d6d4ff6a54d86&shop=mystore.myshopify.com×tamp=1657819465 sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Linux" sec-fetch-dest: empty sec-fetch-mode: cors sec-fetch-site: same-origin user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36 x-requested-with: XMLHttpRequest
Ich glaube, das liegt an der Anfrage, die vom Iframe gesendet wird. Kann mir jemand sagen, was ich tun muss, um dieser Anfrage stattzugeben?
我找到了解决方案! 实际上,我使用的 Laravel 模板 没有public 文件夹内的 .htaccess 文件。我必须手动添加它。
在添加 .htaccess 文件时,它只有以下代码:
并且授权代码未到达 Lararvel 应用程序。
我必须在 .htaccess 文件中添加此代码:
.htaccess 文件中的最终代码是:
然后,所有请求开始工作。