league/oauth2-google to 4.0.saf33r/oauth2-vimeo instead of dukt/oauth2-vimeo.totalVideos value if the stats are not present in the Vimeo video response. (#78)site query param was present in the OAuth redirect URI.dukt\videos\helpers\VideosHelper::getVideoThumbnail() is unable to resolve the thumbnail MIME type. (#71)allowAdminChanges Craft config is enabled.dukt\videos\services\Videos::requestVideoById() method now takes into account Videos’ enableCache config.league/oauth2-google dependency to ^3.0.dukt/oauth2-google dependency with league/oauth2-google.dukt\videos\services\Videos::isOauthProviderConfigured().oauthProviderOptions config from being set from a config file for some providers and from the plugin’s stored settings for other providers.files to the list of fields requested for a Vimeo video.dukt\videos\base\Gateway::setAuthenticationToken() method.dukt\videos\base\Gateway::hasToken() method.dukt\videos\services\Oauth::getTokenData() could return a string instead of an array. (#7)^3.0.0-RC1.registerGatewayTypes to dukt\videos\services\Gateways, giving plugins a chance to register gateway types (replacing getVideosGateways()).dukt\videos\events\RegisterGatewayTypesEvent.craft\web\twig\variables\CraftVariable’s init event to register Videos’ variable class, replacing the now-deprecated defineComponents.dukt\videos\Plugin::getVideosGateways().dukt\videos\services\Oauth::getTokenData().expires value before trying to refresh the token in dukt\videos\base\Gateway::createTokenFromData().dukt\videos\base\Gateway::createTokenFromData() to dukt\videos\services\Oauth::createTokenFromData().dukt\videos\base\Gateway::getToken() to getOauthToken().dukt\videos\base\Gateway::parseJson() with craft\helpers\Json::decode().dukt\videos\fields\Video::prepValue() with normalizeValue(). (#1)dukt\videos\services\Oauth::getToken() would crash if the token didn’t exists for the given gateway.review_link to the list of fields returned by the Vimeo API for a video.dukt\videos\base\Gateway::getJavascriptOrigin().dukt\videos\base\Gateway::getOauthProviderName().dukt\videos\base\Gateway::getRedirectUri().dukt\videos\base\Gateway::getVideosPerPage().dukt\videos\base\GatewayInterface::createOauthProvider().dukt\videos\base\GatewayInterface::getIconAlias().dukt\videos\base\GatewayInterface::getOauthProviderApiConsoleUrl().dukt\videos\base\PluginTrait.dukt\videos\errors\ApiResponseException.dukt\videos\errors\CollectionParsingException.dukt\videos\errors\GatewayMethodNotFoundException.dukt\videos\errors\GatewayNotFoundException.dukt\videos\errors\JsonParsingException.dukt\videos\errors\VideoNotFoundException.dukt\videos\models\Settings.dukt\videos\web\assets\settings\SettingsAsset.dukt\videos\web\assets\videofield\VideoFieldAsset.dukt\videos\web\assets\videos\VideosAsset.dukt/oauthsupportsSearch() method returning true.dukt\videos\controllers\VideosController::actionFieldPreview() to dukt\videos\controllers\ExplorerController::actionFieldPreview().dukt\videos\controllers\VideosController::actionPlayer() to dukt\videos\controllers\ExplorerController::actionPlayer().Craft\Videos_InstallController.Craft\VideosController.dukt\videos\models\Settings::$youtubeParameters.Craft\Videos_CacheService to dukt\videos\services\Cache.Craft\Videos_CollectionModel to dukt\videos\models\Collection.Craft\Videos_GatewaysService to dukt\videos\services\Gateways.Craft\Videos_OauthController to dukt\videos\controllers\OauthController.Craft\Videos_OauthService to dukt\videos\services\Oauth.Craft\Videos_SectionModel to dukt\videos\models\Section.Craft\Videos_SettingsController to dukt\videos\controllers\SettingsController.Craft\Videos_VideoFieldType to dukt\videos\fields\Video.Craft\Videos_VideoModel to dukt\videos\models\Video.Craft\VideosController to dukt\videos\controllers\ExplorerController.Craft\VideosHelper to dukt\videos\helpers\VideosHelper.Craft\VideosService to dukt\videos\services\Videos.Craft\VideosVariable to dukt\videos\web\twig\variables\VideosVariable.dukt\videos\base\Gateway::apiGet() to get().dukt\videos\base\Gateway::authenticationSetToken() to setAuthenticationToken().Dukt\Videos\Gateways\BaseGateway to dukt\videos\base\Gateway.Dukt\Videos\Gateways\IGateway to dukt\videos\base\GatewayInterface.Dukt\Videos\Gateways\Vimeo to dukt\videos\gateways\Vimeo.Dukt\Videos\Gateways\Youtube to dukt\videos\gateways\YouTube.dukt\videos\services\Gateways::loadGateways().