优雅媒体/oauth2-myob

MYOB oAuth 客户端(基于 League 规范)

v0.1.0 2021-04-21 13:30 UTC

This package is auto-updated.

Last update: 2024-09-21 21:02:00 UTC


README

Latest Version on Packagist Software License

此包允许您使用 Myob oAuth API

在使用之前,您需要从 开发者网站 获取 API 密钥。

其他参考链接

安装

通过 Composer

$ composer require elegantmedia/oauth2-myob

用法

授权

以下示例展示了如何从提供者处获取授权 URL。完整示例请参阅 examples/auth.php

require __DIR__ . '/vendor/autoload.php';

$provider = new \ElegantMedia\OAuth2\Client\Provider\Myob([
	'clientId' => 'your_client_id',
	'clientSecret' => 'your_secret',
	'redirectUri' => 'https://example.com/your-url',
]);

// get initial authorization URL
$authUrl = $provider->getAuthorizationUrl();

// save the state value in session to prevent CSRF attacks
$_SESSION['oauth2state'] = $provider->getState();

header('Location: ' . $authUrl);
exit;

获取令牌

以下示例展示了如何从提供者处获取访问令牌。完整示例请参阅 examples/post.php

// valid state, so we try to get an access token
$accessToken = $provider->getAccessToken('authorization_code', [
	'code' => $params['code'],
]);

// You'll have to store these for later use
echo 'Access Token: ' . $accessToken->getToken() . "\r\n\r\n";
echo 'Refresh Token: ' . $accessToken->getRefreshToken() . "\r\n\r\n";
echo 'Expires in: ' . $accessToken->getExpires() . "\r\n\r\n";
echo 'Already expired? ' . ($accessToken->hasExpired() ? 'expired' : 'not expired') . "\r\n\r\n";

$user = $provider->getResourceOwner($accessToken);

// Get resource User
// https://apisupport.myob.com/hc/en-us/articles/360003860376-Validating-the-User
echo 'User ID : ' . $user->getId() . "\r\n";
echo 'Username : ' . $user->getUsername() . "\r\n";

刷新令牌

以下示例展示了如何获取已过期代码的新令牌。完整示例请参阅 examples/post.php

$refreshToken = 'old-token';
$expires = 'old-timestamp';

$expiresAt = \DateTime::createFromFormat('U', $expires);

if ($expiresAt->getTimestamp() > time()) {
	echo "Not expired \r\n";
} else {
	echo "Expired \r\n";

	$accessToken = $provider->getAccessToken('refresh_token', [
		'refresh_token' => $refreshToken,
	]);

	// We have an access token, which we may use in authenticated
	// requests against the service provider's API.

	echo 'Access Token: ' . $accessToken->getToken() . "\r\n";
	echo 'Refresh Token: ' . $accessToken->getRefreshToken() . "\r\n";
	echo 'Expires in: ' . $accessToken->getExpires() . "\r\n";
	echo 'Already expired? ' . ($accessToken->hasExpired() ? 'expired' : 'not expired') . "\r\n";

}

$user = $provider->getResourceOwner($accessToken);
echo 'User ID : ' . $user->getId() . "\r\n";
echo 'Username : ' . $user->getUsername() . "\r\n";

贡献

如果您发现任何错误,请发送 pull-request。

鸣谢

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件