codeinternetapplications / shopify-oauth
Shopify应用的Oauth 2.0身份验证
Requires
- php: >=7.0.0
- guzzlehttp/guzzle: ^6.2
- league/oauth2-client: ^2.3
README
此软件包使您能够与Shopify建立OAuth连接。
该软件包最初是为与Lumen一起使用而编写的。但它也可以与Laravel结合使用。请注意,由于它是为Lumen编写的,因此连接器是无状态的。
安装
使用Composer将此软件包安装到您的项目中
composer require codeinternetapplications/shopify-oauth
配置
我们尽量使其尽可能简单。按照以下步骤开始
复制配置文件
将shopify_oauth.php配置文件复制到您的配置目录,并在bootstrap/app.php文件中使其可用。
调整配置中的密钥
设置您的api_key、api_secret_key和base_url。同时调整您的scopes。您可以使用.env文件来执行此操作(见下文)
确保您的应用程序支持Facades和Eloquent
在Lumen中,您必须在bootstrap/app.php中取消以下行的注释
// $app->withFacades(); // $app->withEloquent();
环境文件
将这些变量放入您的.env文件中
SHOPIFY_APP_BASE_URL=https://url-to-your-app/
SHOPIFY_OAUTH_API_KEY=<API key obtained from the partner dashboard>
SHOPIFY_OAUTH_SECRET_KEY=<API Secret key obtained from the partner dashboard>
同时确保您的APP_KEY已定义。由于我们在数据库中加密一些数据,因此Lumen/Laravel需要此密钥来加密。
注册ShopifyOauthServiceProvider
在您的应用程序中注册ShopifyOauthServiceProvider。
运行迁移
运行迁移以获取con_shops和con_shop_access_tokens表。
php artisan migrate
中间件使用
确保当您想要使用在线令牌时,您必须添加中间件shopify-oauth-handler。建议在路由中使用这些中间件
- shopify-hostname-validation
- shopify-hmac-validation
- shopify-oauth-handler
例如
$router->group([ 'middleware' => [ 'shopify-hostname-validation', 'shopify-hmac-validation', 'shopify-oauth-handler', ] ], function() use ($router) { // Redirect to Polaris view $router->addRoute(['GET','POST','PUT'], '/[{page}]', function () { return view('polaris'); }); });
安装后执行脚本
要安装webhooks或触发安装应用程序后的某些操作,您必须将事件监听器实现到您的应用程序中。
当应用程序安装时,会触发一个事件。您可以监听此事件并实现自定义操作,例如
- 安装webhooks
- 触发一些数据导入
创建监听器并监听
打开您的bootstrap/app.php文件,并确保已启用EventServiceProvider。
打开EventServiceProvider.php文件并添加以下行
protected $listen = [ 'CodeInternetApplications\ShopifyOauth\Events\PostShopifyCallbackEvent' => [ 'App\Listeners\PostShopifyCallbackListener', // assuming that your listener is located at App\Listeners\PostShopifyCallbackListener ], ];
在您的app/Listeners文件夹中创建一个新的本地监听器,并添加您要执行的脚本。您可以从以下模板开始
<?php namespace App\Listeners; use CodeInternetApplications\ShopifyOauth\Events\PostShopifyCallbackEvent; class PostShopifyCallbackListener { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param PostShopifyCallbackEvent $event * @return void */ public function handle(PostShopifyCallbackEvent $event) { // log \Log::channel('stack')->info('PostShopifyCallbackEvent is triggered', []); } }