-
-
Notifications
You must be signed in to change notification settings - Fork 375
App Proxies
App proxies are way for your app to display content directly inside a shop with it's own URL (like http://cool-shop.com/apps/cool-app).
Shopify makes a request to the app, this package will verify the request, you can then return any content you wish to display inside the shop.
- Visit your app in the Shopify Dashboard
- Click
Extensions - Click
Manage Extensions - Scroll down to
Online Storeand enable it - Enter the handle (example: apps/proxy, or tools/your-app, etc)
- Enter the URL to the proxy route of your application
- Hit save
php artisan make:controller AppProxyController
This will create a file AppProxyController.php in app/Http/Controllers.
Open app/routes/web.php and create a new GET entry to point to the newly created controller.
Route::get('/proxy', 'AppProxyController@index')->middleware('auth.proxy');This will point /proxy to AppProxyController and it's method index. The key here is the use of the auth.proxy middleware which will take care of validating the proxy signature before sending the request to the controller.
You're now free to create an app proxy entry in your app's configuration in the partner dashboard, point the URL to your new proxy route, example: https://your-domain.com/proxy.
At its basics, you can simply open routes/web.php and add this:
Route::get('/proxy', function () {
return response('Hello, world!')->withHeaders(['Content-Type' => 'application/liquid']);
})->middleware('auth.proxy');Now, when visiting the proxy URL on your shop, you should see "Hello, world!" embedded into your Shopify theme.
Be sure to return a 200 response on your controller method. If you wish to integrate nicely with the shop's theming be sure to also respond with content type being application/liquid.
If the browser is prompting download of application/liquid file, and your response is 200 status with header Content-Type: application/liquid, you should check that your .htaccess file in the /public directory is not redirecting the path to a non-trailing slash version otherwise the 301 redirect will cause Shopify to download the file. You should add !^/?yourproxypath* directly after the RewriteRule, replacing yourproxypath with the path for your application proxy.
E.g.
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
Changes to
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule !^/?myproxy*$ ^ %1 [L,R=301]
Ensure you clear your cache as the 301 redirect may be stored in your browser's storage.
If this doesn't fix the problem then the issue lies within your server setup, not the package.
For more information, see Shopify's docs on application proxies.
road map
Welcome to the wiki!
Please see the homepage for a list of relevant pages.