jonathantorres/medium-sdk

集成Medium的OAuth2 API的开源SDK。

v0.5.1 2022-09-03 02:04 UTC

This package is not auto-updated.

Last update: 2024-09-14 11:38:56 UTC


README

Tests Version

开源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许可证。请参阅许可证文件获取更多信息。