Использование ZF2 Oauth2

Я пытаюсь получить https://github.com/zfcampus/zf-oauth2, работая с моим приложением (в основном потому, что у меня установлена ​​apigility, и zf-oauth2 приходит с ним).

Я читаю последний раздел, и он говорит, чтобы защитить, я просто использую следующий код (например, наверху контроллера):

if (!$this->server->verifyResourceRequest(OAuth2Request::createFromGlobals())) { // Not authorized return 401 error $this->getResponse()->setStatusCode(401); return; } // where $this->server is an instance of OAuth2\Server (see the AuthController.php). 

Однако $ this-> сервер должен быть каким-то образом введен. Но я не могу найти, как и что вводить. Нажимая на ссылку, чтобы увидеть AuthController.php, я получаю доступную страницу …

Редактировать: спасибо Тому и Уджвалю, я думаю, что я на один шаг ближе.

В моем контроллере теперь у меня есть следующее:

 use ZF\OAuth2\Controller\AuthController; class BaseController extends AuthController { } 

В моем Module.php я пытаюсь ввести OAuth2Server как таковой:

 public function getServiceConfig() { return array( 'factories' => array( '\Stand\Controller\BaseController' => function ($sm) { $cls = new BaseController($sm->get('ZF\OAuth2\Service\OAuth2Server')); return $cls; }, ) ); } 

Но, когда я пытался отобразить страницу, она не заразила меня инъекцией. я получил

Допустимая фатальная ошибка: аргумент 1 передан в ZF \ OAuth2 \ Controller \ AuthController :: __ construct () должен быть экземпляром OAuth2 \ Server

Пожалуйста посоветуй!

благодаря

Вы можете создать завод таким образом:

module.config.php

 <?php return array( 'controllers' => array( 'factories' => array( 'Test\Controller\Test' => function($sm) { $locator = $sm->getServiceLocator(); $server = $locator->get('ZF\OAuth2\Service\OAuth2Server'); $provider = $locator->get('ZF\OAuth2\Provider\UserId'); return new Test\Controller\TestController($server, $provider); } ) ), ... 

И тогда вы можете использовать его в своем классе контроллера:

 <?php namespace Test\Controller; use ZF\OAuth2\Controller\AuthController; use ZF\OAuth2\Provider\UserId\UserIdProviderInterface; use Zend\View\Model\JsonModel class TestController extends AuthController { public function __construct($serverFactory, UserIdProviderInterface $userIdProvider) { parent::__construct($serverFactory, $userIdProvider); } public function indexAction() { $server = call_user_func($this->serverFactory, "oauth"); if (! $server->verifyResourceRequest($this->getOAuth2Request())) { $response = $server->getResponse(); return $this->getApiProblemResponse($response); } return new JsonModel(array("Hello" => "World!")); } } 

Ссылка: https://framework.zend.com/manual/2.1/ru/modules/zend.service-manager.quick-start.html