找 AI 寫的最簡單串接
不確定流程是否為 best practice
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; class ShopifyController extends Controller { public function index(Request $request) { // Shopify 必定傳入 shop=xxxxx.myshopify.com $shop = $request->query('shop'); if (!$shop) { return 'Missing ?shop=xxxxx.myshopify.com'; } // 從 DB 找現有 token (POC 用 session 模擬) $token = session("token_{$shop}"); // 已安裝 → 直接進入 app 面板 if ($token) { return "已安裝 App,商店 {$shop} 的 Token 是:<br>".$token; } // 尚未安裝 → 跳 OAuth Flow $clientId = '6b7001530576df226f1e8d6773eea438'; $scopes = 'read_products'; // $redirectUri = route('shopify.redirect'); $redirectUri = 'https://demo-connect.turn.tw/redirect'; $authorizeUrl = "https://{$shop}/admin/oauth/authorize?".http_build_query([ 'client_id' => $clientId, 'scope' => $scopes, 'redirect_uri' => $redirectUri, ]); return redirect($authorizeUrl); } public function redirect(Request $request) { $shop = $request->get('shop'); $code = $request->get('code'); if (!$shop || !$code) { return 'Missing shop or code.'; } $clientId = '6b7001530576df226f1e8d6773eea438'; $clientSecret = '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'; // 呼叫 Shopify 換永久 access token $response = Http::post("https://{$shop}/admin/oauth/access_token", [ 'client_id' => $clientId, 'client_secret' => $clientSecret, 'code' => $code, ]); if ($response->failed()) { return 'Token exchange failed: '.$response->body(); } $accessToken = $response->json('access_token'); // POC → 先存在 Session session(["token_{$shop}" => $accessToken]); return redirect('/?shop='.$shop); } }
每週二晚上《CodeLove Talk》直播! 開放觀眾 Call-in,一起討論軟體開發相關的話題!
找 AI 寫的最簡單串接
不確定流程是否為 best practice