Events
# Available Events
Event |
---|
EVENT_USER_CONNECTED |
EVENT_USER_DISCONNECTED |
EVENT_WEBHOOK_SYNC |
# Connected
To recieve data when a user connects their Strava account to Craft, use the EVENT_USER_CONNECTED
event. This returns $event->user
:
use bymayo\stravasync\events\UserConnectedEvent;
use bymayo\stravasync\services\UserService;
use yii\base\Event;
Event::on(
UserService::class,
UserService::EVENT_USER_CONNECTED,
function(UserConnectedEvent $event) {
// Do something
}
);
# Disconnected
To recieve data when a user disconnects their Strava account to Craft, use the EVENT_USER_DISCONNECTED
event. This returns $event->user
:
use bymayo\stravasync\events\userDisconnectedEvent;
use bymayo\stravasync\services\UserService;
use yii\base\Event;
Event::on(
UserService::class,
UserService::EVENT_USER_DISCONNECTED,
function(userDisconnectedEvent $event) {
// Do something
}
);
# Webhook
If you want to receive data from the Strava Webhook Events API (https://developers.strava.com/docs/webhooks/) when an activity/athlete is created or updated for example, you can use the plugins EVENT_WEBHOOK_SYNC
event.
To initally set this up, you need to request Webhook access from Strava (See Webhooks Overview on https://developers.strava.com/docs/webhooks). Strava will then enable your account to access the Webhooks feature.
Next, you need to create a Webhook Subscription by doing a POST request to the Strava Sync webhook controller (http://website.com/strava-sync/webhook/sync
) with a Bearer Token and client_id
, client_secret
, verify_token
, callback_url
parameters (The callback_url
should be the same as the POST request URL)
This will then return a callback validation. If this is successful you will get back an id
(It's worth making note of this to view/delete the subscription during your project developement)
Once the subscription has been created, you can now use the webhookSync
event. So whenever an activity/athlete is created, edited or deleted on Strava you can get data back from it for your own plugin/module:
use bymayo\stravasync\events\WebhookSyncEvent;
use bymayo\stravasync\services\WebhookService;
use yii\base\Event;
Event::on(
WebhookService::class,
WebhookService::EVENT_WEBHOOK_SYNC,
function(WebhookSyncEvent $event) {
// Do something
}
);
The $event
returns an $event->athlete
and $event->request
property.
The $event->athlete
property contains the userId
, athleteId
and accessToken
of the validated Strava user.
The $event->request
property contains all Event
data from the Strava Webhook e.g. object_type
which is either athlete, or activity aswell as aspect_type
which returns whether it's new, updated etc (See Event Data
on https://developers.strava.com/docs/webhooks/)