目录

开发其它平台

优质
小牛编辑
139浏览
2023-12-01

建议以参考其它平台的代码为主,在这只是简单说明一下。

类属性

接口所需的非通用参数,都写在类属性中,不写在方法的参数里。

方法

实现如下几个方法:

    /**
     * 第一步:获取登录页面跳转url
     * @param string $callbackUrl 登录回调地址
     * @param string $state 状态值,不传则自动生成,随后可以通过->state获取。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。一般为每个用户登录时随机生成state存在session中,登录回调中判断state是否和session中相同
     * @param array $scope 请求用户授权时向用户显示的可进行授权的列表。可空
     * @return string
     */
    public abstract function getAuthUrl($redirectUri = null, $state = null, $scope = null);

    /**
     * 第二步:处理回调并获取access_token。与getAccessToken不同的是会验证state值是否匹配,防止csrf攻击。
     * @param string $storeState 存储的正确的state
     * @param string $code 第一步里$redirectUri地址中传过来的code,为null则通过get参数获取
     * @param string $state 回调接收到的state,为null则通过get参数获取
     * @return string
     */
    protected abstract function __getAccessToken($storeState, $code = null, $state = null);

    /**
     * 获取用户资料
     * @param string $accessToken
     * @return array
     */
    public abstract function getUserInfo($accessToken = null);

    /**
     * 刷新AccessToken续期
     * @param string $refreshToken
     * @return bool
     */
    public abstract function refreshToken($refreshToken);

    /**
     * 检验授权凭证AccessToken是否有效
     * @param string $accessToken
     * @return bool
     */
    public abstract function validateAccessToken($accessToken = null);