你可以为任意的外部验证服务商创建你自己的验证客户端,且支持 OpenId 或 OAuth 协议。 若要这么做,首先,你需要确认外部验证服务商支持哪些协议,以下为你的扩展提供的基类的名称:
在此步骤中,你可以决定验证客户端的默认名称、标题和视图选项,声明相应的方法:
use yii\authclient\OAuth2;
class MyAuthClient extends OAuth2
{
    protected function defaultName()
    {
        return 'my_auth_client';
    }
    protected function defaultTitle()
    {
        return 'My Auth Client';
    }
    protected function defaultViewOptions()
    {
        return [
            'popupWidth' => 800,
            'popupHeight' => 500,
        ];
    }
}
根据实际使用的基类,你需要重新声明不同的域和方法。
你要做的所有工作就是通过重新声明 authUrl 域指定验证 URL。
你可能还需要设置默认的必需属性,以及可选属性。
例如:
use yii\authclient\OpenId;
class MyAuthClient extends OpenId
{
    public $authUrl = 'https://www.my.com/openid/';
    public $requiredAttributes = [
        'contact/email',
    ];
    public $optionalAttributes = [
        'namePerson/first',
        'namePerson/last',
    ];
}
你需要指定:
authUrl 域)。tokenUrl 域)。apiBaseUrl 域)。initUserAttributes() 方法)。例如:
use yii\authclient\OAuth2;
class MyAuthClient extends OAuth2
{
    public $authUrl = 'https://www.my.com/oauth2/auth';
    public $tokenUrl = 'https://www.my.com/oauth2/token';
    public $apiBaseUrl = 'https://www.my.com/apis/oauth2/v1';
    protected function initUserAttributes()
    {
        return $this->api('userinfo', 'GET');
    }
}
你也可以指定默认的验证范围。
注意:某些 OAuth 提供商可能并不严格遵循 OAuth 标准,或没有清晰说明与 OAuth 标准的差别, 可能需要为实现这些可客户端做额外的工作。
你需要指定:
authUrl 域)。requestTokenUrl 域)。accessTokenUrl 域)。apiBaseUrl 域)。initUserAttributes() 方法)。例如:
use yii\authclient\OAuth1;
class MyAuthClient extends OAuth1
{
    public $authUrl = 'https://www.my.com/oauth/auth';
    public $requestTokenUrl = 'https://www.my.com/oauth/request_token';
    public $accessTokenUrl = 'https://www.my.com/oauth/access_token';
    public $apiBaseUrl = 'https://www.my.com/apis/oauth/v1';
    protected function initUserAttributes()
    {
        return $this->api('userinfo', 'GET');
    }
}
你也可以指定默认的验证范围。
注意:某些 OAuth 提供商可能并不严格遵循 OAuth 标准,或没有清晰说明与 OAuth 标准的差别, 可能需要为实现这些可客户端做额外的工作。