OAuth.php 2.4 KB
<?php

namespace Lackoxygen\TiktokOpen\Wap\OAuth;

use Lackoxygen\TiktokOpen\Base\ServiceManager;

class OAuth extends ServiceManager
{
    public function accessToken(string $code)
    {
        return $this->app['client']->asForm()->post('/oauth/access_token/', [
            'grant_type' => 'authorization_code',
            'client_key' => $this->app['config']->getAppKey(),
            'client_secret' => $this->app['config']->getAppSecret(),
            'code' => $code
        ]);
    }

    public function connect(string $scope, string $redirectUri, string $optionalScope = '', string $state = '')
    {
        return $this->app['client']->get(
            '/platform/oauth/connect/', [
                'client_key' => $this->app['config']->getAppKey(),
                'response_type' => 'code',
                'scope' => $scope,
                'optionalScope' => $optionalScope,
                'redirect_uri' => $redirectUri,
                'state' => $state
            ]
        );
    }


    public function renewRefreshToken(string $refreshToken)
    {
        return $this->app['client']->asForm()->post(
            '/oauth/renew_refresh_token/',
            [
                'client_key' => $this->app['config']->getAppKey(),
                'refresh_token' => $refreshToken
            ]
        );
    }


    public function clientToken()
    {
        return $this->app['client']->asForm()->post(
            '/oauth/client_token/',
            [
                'client_key' => $this->app['config']->getAppKey(),
                'client_secret' => $this->app['config']->getAppSecret(),
                'grant_type' => 'client_credential'
            ]
        );
    }


    public function refreshToken(string $refreshToken)
    {

        return $this->app['client']->asForm()->post(
            '/oauth/refresh_token/',
            [
                'client_key' => $this->app['config']->getAppKey(),
                'grant_type' => 'refresh_token',
                'refresh_token' => $refreshToken
            ]
        );
    }


    public function authorizeV2($scope, $redirectUri, $state)
    {
        return $this->app['client']->get(
            '/oauth/authorize/v2/',
            [
                'client_key' => $this->app['config']->getAppKey(),
                'response_type' => 'code',
                'scope' => $scope,
                'redirect_uri' => $redirectUri,
                'state' => $state
            ]
        );
    }
}