hrevert / ht-oauth-server-client-module
一个为 zfr-oauth2-server 提供自定义授权的 Zend Framework 2 模块,用于通过第三方应用程序(如 Facebook、Google 等)验证用户。
0.3.0
2015-08-08 05:00 UTC
Requires
- php: >=5.5
- hrevert/ht-league-oauth-client-module: 0.3.*
- hrevert/ht-oauth-client-module: 0.0.*
- zendframework/zend-stdlib: ~2.2
- zfr/zfr-oauth2-server-module: 0.7.*
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-13 02:21:32 UTC
README
一个为 zfr-oauth2-server 提供自定义授权的 Zend Framework 2 模块,用于通过第三方应用程序(如 Facebook、Google 等)验证用户。
名字的含义是什么?
该模块为 OAuth2 服务器提供授权,同时也是一个 Facebook、Google 等OAuth2 服务器客户端。因此,它被命名为“服务器”和“客户端”。
安装
- 将
"hrevert/ht-oauth-server-client-module": "0.3.*"
添加到 composer.json,然后运行php composer.phar update
。 - 在
config/application.config.php
中启用以下模块。
'modules' => array( 'ZfrOAuth2Module\Server', 'HtLeagueOauthClientModule', 'HtOauthClientModule', 'HtOauth\Server\ClientModule', ),
配置模块
设置用户类
用户类必须实现 Hrevert\OauthClient\Model\UserInterface
接口。然后,您需要修改 Doctrine 映射以将此接口与您自己的用户类关联起来。
return [ 'doctrine' => [ 'entity_resolver' => [ 'orm_default' => [ 'Hrevert\OauthClient\Model\UserInterface' => 'Application\Entity\User' ] ] ] ]
提供者配置
您需要定义客户端 ID、客户端密钥和其他配置。有关这些配置,请参阅 此处。
添加授权类型
return [ 'zfr_oauth2_server' => [ 'grants' => [ // .. other grants, 'HtOauth\Server\ClientModule\Grant\Oauth2Client', ] ] ]
启用提供者
通过向 oauth_provider
表中添加记录来启用提供者。
自动创建用户
当新用户尝试登录时,默认情况下不允许登录。
要自动创建新用户,您需要指定用于创建用户的可调用对象。
return [ 'ht_oauth_service_client' => [ 'create_user_callable' => function(\HtLeagueOauthClientModule\Model\UserInterface $userDetails) { $user = ......; $userProvider = new \Hrevert\OauthClient\Entity\UserProvider(); $userProvider->setUser($user); return $userProvider; // or just $user = ......; return $user; } ] ];
它如何工作
使用 OAuth 2.0 登录
- 客户端:客户端向 /oauth/token 服务器发送带有 OAuth2 授权代码或访问令牌的
POST
请求。 - 服务器:使用 授权代码,将其交换为 提供者访问令牌。
- 服务器:使用步骤 2 中的 提供者访问令牌 获取用户信息。
- 服务器:通过唯一的 提供者 ID 查找用户。如果用户已存在,则获取现有用户,否则创建新的用户帐户。
- 服务器:回复一个 新的访问令牌。