Our Partner & Developer boards on the community are moving to a brand new home: the .dev community forums! While you can still access past discussions here, for all your future app and storefront building questions, head over to the new forums.

App bridge in PHP

App bridge in PHP

swyft
Visitor
1 0 0

Hi,

I developed shopify app using following

1- PHP (for OAuth and redirection to react user interface only)

2- React (for user interface)

3- NodeJs (for Swyft's server communication)

 

Upon submitting the app for approval, i got response that i must use Shopify App Bridge because app experience is not consistent. It basically escape the iFrame on initial installation, otherwise it works in iFrame quite fine. I am handling OAuth using PHP (i tried it with nodejs, but UI was always escaping from iFrame), how can i implement shopify app bridge to make sure app does not escape the iframe even on initial installation?

index.php

 

<?php
require_once 'vendor/autoload.php';
try {
    $config = array(
        'ShopUrl' => $_GET['shop'],
        'ApiKey' => '12345',
        'SharedSecret' => 'some_secret',
    );

    \PHPShopify\ShopifySDK::config($config);

    $scopes = 'read_orders,write_orders,read_customers,read_product_listings,read_products,read_shipping';

    $redirectUrl = 'https://......./callback.php';

    \PHPShopify\AuthHelper::createAuthRequest($scopes, $redirectUrl);
} catch (\Throwable $th) {
    var_dump($th);
}

 

 

 

callback.php

 

<?php
require_once './vendor/autoload.php';
require './db_functions.php';
try {
    $config = array(
        'ShopUrl' => $_GET['shop'],
        'ApiKey' => '12345',
        'SharedSecret' => 'some_secret',
    );

    PHPShopify\ShopifySDK::config($config);
    $accessToken = \PHPShopify\AuthHelper::getAccessToken();

    initializeClient($accessToken, $_GET['shop']);
    session_start();
    $_SESSION['accessToken'] = $accessToken;
    $_SESSION['shop'] = $_GET['shop'];
    setcookie('swyft-shopify-access-token', $accessToken);
    setcookie('swyft-shopify-shop', $_GET['shop']);
    header("X-Frame-Options: SAMEORIGIN"); // setting iframe header
   header("Location: /?accessToken=" . $accessToken . "&shop=" . $_GET['shop']); // this redirects to React UI
    exit();

} catch (\Throwable $th) {
    var_dump($th);
}

 

Reply 1 (1)

Iliyan_Fermino
Tourist
6 0 0

@swyft hey did you find a solution to this, I am currently having the same problem.