1. Go to this page and download the library: Download tourze/gitee-api-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// Get user information (>getUser($userId, $application);
// Get user repositories ( details (tory branches (pository pull requests (
use GiteeApiBundle\Controller\OAuthController;
class CustomOAuthController extends OAuthController
{
public function callback(Request $request, GiteeApplication $application): Response
{
$token = parent::callback($request, $application);
// Add your custom logic here
return $this->redirectToRoute('your_custom_route');
}
}
use GiteeApiBundle\Service\GiteeOAuthService;
class YourController
{
public function __construct(
private readonly GiteeOAuthService $oauthService,
private readonly UrlGeneratorInterface $urlGenerator,
) {
}
public function connect(Request $request, GiteeApplication $application): Response
{
$callbackUrl = 'https://your-domain.com/success?token={accessToken}';
$authUrl = $this->oauthService->getAuthorizationUrl(
$application,
$this->urlGenerator->generate('your_callback_route', [
'applicationId' => $application->getId(),
], UrlGeneratorInterface::ABSOLUTE_URL),
$callbackUrl
);
return new RedirectResponse($authUrl);
}
public function callback(Request $request, GiteeApplication $application): Response
{
$token = $this->oauthService->handleCallback(
$request->query->get('code'),
$this->getUser()?->getId(),
$application,
$this->urlGenerator->generate('your_callback_route', [
'applicationId' => $application->getId(),
], UrlGeneratorInterface::ABSOLUTE_URL)
);
// Handle the callback URL from state if needed
$state = $request->query->get('state');
$callbackUrl = $state ? $this->oauthService->verifyState($state) : null;
if ($callbackUrl) {
$callbackUrl = strtr($callbackUrl, [
'{accessToken}' => $token->getAccessToken(),
'{userId}' => $token->getUserId(),
'{giteeUsername}' => $token->getGiteeUsername() ?? '',
]);
return new RedirectResponse($callbackUrl);
}
return $this->redirectToRoute('your_success_route');
}
}
// Get all tokens for a user-application pair
$tokens = $tokenRepository->findByUserAndApplication($userId, $applicationId);
// Get the most recent valid token
$latestToken = $tokenRepository->findLatestValidToken($userId, $applicationId);
// Manually refresh a token
$refreshedToken = $oauthService->refreshToken($token);
class CustomGiteeApiClient extends GiteeApiClient
{
public function getCustomData(string $userId, GiteeApplication $application): array
{
return $this->request('GET', '/v5/custom-endpoint', [], $userId, $application);
}
}
// Only sync public repositories
$publicRepos = array_filter($repositories, fn($repo) => !$repo['private']);
// Only sync repositories with specific languages
$phpRepos = array_filter($repositories, fn($repo) => $repo['language'] === 'PHP');
use GiteeApiBundle\Exception\GiteeApiException;
try {
$user = $giteeApiClient->getUser($userId, $application);
} catch (GiteeApiException $e) {
// Handle API errors
$logger->error('Gitee API error: ' . $e->getMessage());
}
text
/gitee/oauth/connect/{applicationId}?callbackUrl={successUrl}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.