Deploy / deploy (push) Successful in 14s
/shopify/install → redirects to Shopify OAuth /shopify/callback → exchanges code for access token and displays it To be removed after token is captured. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
55 lines
1.5 KiB
PHP
55 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Http;
|
|
|
|
class ShopifyInstallController extends Controller
|
|
{
|
|
private string $clientId;
|
|
private string $clientSecret;
|
|
private string $shop;
|
|
private string $scopes = 'read_products,read_inventory,read_orders';
|
|
|
|
public function __construct()
|
|
{
|
|
$this->clientId = '1b6430c8cc94b5e58716235abd9bbd73';
|
|
$this->clientSecret = config('services.shopify.webhook_secret');
|
|
$this->shop = 'bluefootedboobyspices.myshopify.com';
|
|
}
|
|
|
|
public function install()
|
|
{
|
|
$url = "https://{$this->shop}/admin/oauth/authorize"
|
|
. "?client_id={$this->clientId}"
|
|
. "&scope={$this->scopes}"
|
|
. "&state=spicesetup";
|
|
|
|
return redirect($url);
|
|
}
|
|
|
|
public function callback(Request $request)
|
|
{
|
|
$code = $request->query('code');
|
|
|
|
if (!$code) {
|
|
return response('Kein Code empfangen. ' . $request->getQueryString(), 400);
|
|
}
|
|
|
|
$response = Http::post("https://{$this->shop}/admin/oauth/access_token", [
|
|
'client_id' => $this->clientId,
|
|
'client_secret' => $this->clientSecret,
|
|
'code' => $code,
|
|
]);
|
|
|
|
if ($response->failed()) {
|
|
return response('Token-Exchange fehlgeschlagen: ' . $response->body(), 500);
|
|
}
|
|
|
|
$token = $response->json('access_token');
|
|
|
|
return response("<pre>SHOPIFY_ACCESS_TOKEN={$token}</pre>");
|
|
}
|
|
}
|