我正在尝试使用Phalcon中的Micro应用程序开发 RESTful API 。现在我正在使用 Facebook SDK for PHP 进行社交登录,但我发现当 Facebook 将我重定向到我的回调(显然内部带有查询字符串)时,路由器找不到任何处理程序方法。
GET: http://localhost:8000/api/v1/register/facebook/callback?code=...&state=...#_=_
Not-Found handler is not callable or is not defined
#0 /home/adrian/PhpstormProjects/myproject/index.php(39): Phalcon\Mvc\Micro->handle()
#1 {main}
我所有其他路线都正常工作,但这是我第一次面对查询字符串,所以我不知道我是否做错了什么。
我正在使用Micro Collections进行路由和 PHP内置服务器。
这是我的.htrouter.php
。当我禁止路由中的查询字符串正常工作$_SERVER['REQUEST_URI']
,但Facebook SDK 失败,因为它需要参数。我试图找出 Phalcon 是否将 URL 和查询字符串保存在不同的变量中,但我认为情况并非如此。$_GET
<?php
if (!file_exists(__DIR__ . '/' . $_SERVER['REQUEST_URI'])) {
$_GET['_url'] = $_SERVER['REQUEST_URI'];
}
return false;
我的micro-collection.php
<?php
use \Phalcon\Mvc\Micro\Collection as MicroCollection;
$register = new MicroCollection();
$register->setHandler('App\Controllers\V1\RegisterController', true);
$register->setPrefix('/api/v1/register');
$register->get('/facebook', 'getAuthFacebook');
$register->get('/facebook/callback', 'facebookCallback');
return $register;
这是我的RegisterController.php
<?php
namespace App\Controllers\V1;
use App\Controllers\ControllerBase;
use Phalcon\Http\Response;
class RegisterController extends ControllerBase
{
public function getAuthFacebook()
{
$helper = $this->facebook->getRedirectLoginHelper();
$permissions = ['email', 'user_likes'];
$loginUrl = $helper->getLoginUrl('http://localhost:8000/api/v1/register/facebook/callback', $permissions);
return new Response($loginUrl);
}
public function facebookCallback()
{
....
}
}
我的与为新项目生成的index.php
完全相同,phalcon-devtools
只是我挂载了我的微收藏,所以我认为问题不存在。
先感谢您!