我正在尝试使用Phalcon中的Micro应用程序开发RESTful API .现在我正在使用面向PHP的Facebook SDK进行社交登录,但我发现当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
变量中,但我认为情况并非如此.
我的
micro-collection.php
setHandler('App\Controllers\V1\RegisterController', true); $register->setPrefix('/api/v1/register'); $register->get('/facebook', 'getAuthFacebook'); $register->get('/facebook/callback', 'facebookCallback'); return $register;这是我的
RegisterController.php
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
生成不同的是我安装我的微收藏一个新的项目,所以我觉得这个问题是不存在的.先感谢您!
1> soutoner..:最后,经过论坛的大量研究,我找到了解决方案.我不得不把它添加到我的
index.php
:刚过:
$app = new \Phalcon\Mvc\Micro($di);这个:
$app->getRouter()->setUriSource(\Phalcon\Mvc\Router::URI_SOURCE_SERVER_REQUEST_URI);资源
我不知道它为什么会起作用,因为正如文档所说,它改变了路由器的行为以便使用
$_SERVER['REQUEST_URI']
而不是$_GET['_url']
实际上.htrouter.php
(或者至少尝试做).无论如何,因为我对Phalcon不是很有经验,所以我很可能误解了一些东西.希望能帮助到你.