jonathantorres / medium-sdk
集成Medium的OAuth2 API的开源SDK。
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- mockery/mockery: ^1.5.0
- phpunit/phpunit: ^9.5
README
开源SDK,用于将Medium的OAuth2 API集成到您的PHP应用程序中。请注意,Medium的API仍处于早期阶段,此实现不是最终的。将会发生破坏性更改。此SDK是非官方的。Medium的API文档可以在这里找到。
安装
composer require jonathantorres/medium-sdk
身份验证
使用您的客户端凭据初始化SDK
use JonathanTorres\MediumSdk\Medium; $credentials = [ 'client-id' => 'CLIENT-ID', 'client-secret' => 'CLIENT-SECRET', 'redirect-url' => 'http://example.com/callback', 'state' => 'somesecret', 'scopes' => 'scope1,scope2', ]; $medium = new Medium($credentials);
您还可以使用connect
方法。
use JonathanTorres\MediumSdk\Medium; $medium = new Medium(); $medium->connect($credentials);
基于浏览器的身份验证
请求身份验证URL,此URL将用户带到Medium的身份验证页面。如果成功,将返回一个授权码。
$authUrl = $medium->getAuthenticationUrl(); <a href="<?php echo $authUrl; ?>">Authenticate with Medium</a>
从URL中获取授权码,并使用authenticate
方法以便能够向API发出请求。现在您应该可以开始发出请求。
$authorizationCode = $_GET['code']; $medium->authenticate($authorizationCode);
生成新的访问令牌
访问令牌有效期为60天。一旦过期,您可以使用刷新令牌请求新的访问令牌。刷新令牌不会过期。您可以使用刷新令牌请求新的访问令牌。
$accessToken = $medium->exchangeRefreshToken($refreshToken); $medium->setAccessToken($accessToken);
如果您在身份验证后需要检索刷新令牌,可以使用getRefreshToken();
方法。
$refreshToken = $medium->getRefreshToken();
使用自签发的访问令牌进行身份验证
Medium建议使用基于浏览器的身份验证,但您也可以使用从您的Medium 设置页面生成的自签发的访问令牌向API发出请求。这些类型的令牌永远不会过期。一旦您有了它,您就可以使用此访问令牌进行身份验证。
$medium = new Medium('SELF-ISSUED-ACCESS-TOKEN');
您还可以使用connect
方法。
$medium = new Medium(); $medium->connect('SELF-ISSUED-ACCESS-TOKEN');
现在您应该准备好使用您自签发的访问令牌开始向API发出请求。
用户
获取认证用户的详细信息。
这将返回一个包含用户详细信息的对象
$user = $medium->getAuthenticatedUser(); echo 'Authenticated user name is: ' . $user->data->name;
出版物
列出指定用户的出版物
这将返回一个对象数组,代表与指定用户以某种方式相关的出版物。
$publications = $medium->publications($userId)->data; foreach($publications as $publication) { echo 'Publication name: ' . $publication->name; }
列出指定出版物的贡献者
这将返回一个用户数组,这些用户被允许在指定出版物下发布。
$contributors = $medium->contributors($publicationId)->data; foreach($contributors as $contributor) { echo 'User ' . $contributor->userId . ' is an ' . $contributor->role . ' on ' . $contributor->publicationId; }
帖子
创建帖子
这将创建在认证用户个人资料上的帖子。提供认证用户的ID和帖子数据。这将返回一个包含创建的帖子详细信息的对象。
$user = $medium->getAuthenticatedUser(); $data = [ 'title' => 'Post title', 'contentFormat' => 'html', 'content' => 'This is my post content.', 'publishStatus' => 'draft', ]; $post = $medium->createPost($user->data->id, $data); echo 'Created post: ' . $post->data->title;
在出版物下创建帖子
这将创建在认证用户个人资料上的帖子,但也会将其与一个出版物关联。提供与创建帖子相同的数据。响应也将相同,除了添加publicationId
字段。
$data = [ 'title' => 'Post title', 'contentFormat' => 'html', 'content' => 'This is my post content.', 'publishStatus' => 'draft', ]; $post = $medium->createPostUnderPublication($publicationId, $data); echo 'Created post: ' . $post->data->title . ' under the publication ' . $post->data->publicationId;
图片
上传图片。
提供图片资源、图片名称和扩展名。这将返回一个包含上传图片数据的对象。
$imageResource = fopen('path/to/your/image', 'r'); $image = $medium->uploadImage($imageResource, 'image-filename.jpg'); echo 'Uploaded image ' . $image->data->url . ' succesfully.';
运行示例
在克隆您的仓库后
git clone git@github.com:jonathantorres/medium-sdk-php.git
在examples/credentials.php
上添加您的API凭据
$credentials = [ 'client-id' => 'YOUR-CLIENT-ID', 'client-secret' => 'YOUR-CLIENT-SECRET', 'redirect-url' => 'https://:8888/callback.php', 'state' => 'secret', 'scopes' => 'basicProfile,publishPost,listPublications', ];
在examples文件夹中启动包含的php服务器
cd medium-sdk-php/examples && php -S localhost:8888
运行测试
测试是用PHPUnit编写的。
在克隆您的仓库后
git clone git@github.com:jonathantorres/medium-sdk-php.git
从您的Medium 设置页面生成一个自签名的访问令牌。您需要它来运行集成测试。然后,只需在项目的根目录下运行composer test
cd medium-sdk-php export MEDIUM_TOKEN=YOUR_ACCESS_TOKEN; composer test
Laravel服务提供者
现在可以获取Laravel框架的服务提供者,您可以从这里获取!
变更日志
请参阅变更日志获取更多信息。
贡献
请参阅贡献指南获取更多详细信息。
许可
本软件使用MIT许可证。请参阅许可证文件获取更多信息。