这是我第一次在项目中实施OAuth。我在github上找到了laravel-5 oriceon / oauth-5-laravel的演练。我正确地遵循了所有步骤。但是,当我进入控制器功能时,我收到一条错误消息:
Call to undefined method Illuminate\Support\Facades\Request::get()
这是我的控制器功能:
public function loginWithFacebook(Request $request)
{
// get data from request
$code = $request->get('code');
// get fb service
$fb = \OAuth::consumer('Facebook');
// check if code is valid
// if code is provided get user data and sign in
if ( ! is_null($code))
{
// This was a callback request from facebook, get the token
$token = $fb->requestAccessToken($code);
// Send a request with it
$result = json_decode($fb->request('/me'), true);
$message = 'Your unique facebook user id is: ' . $result['id'] . ' and your name is ' . $result['name'];
echo $message. "<br/>";
//Var_dump
//display whole array.
dd($result);
}
// if not ask for permission first
else
{
// get fb authorization
$url = $fb->getAuthorizationUri();
// return to facebook login url
return redirect((string)$url);
}
}
在应用程序中,您可以看到我确实添加了正确的提供程序和别名:
'OAuth' => Artdarek\OAuth\Facade\OAuth::class,
Artdarek\OAuth\OAuthServiceProvider::class,
在我看来,我调用导致正确控制器功能的路由,并且我一直到达此错误。怎么会这样呢?该功能是否应该向提供商或其他人打电话?感谢您查看此Stack!
答案 0 :(得分:1)
首先,我希望你的观点不是在向后调用一条路线。路由立即用于确定控制器,然后用于确定和响应正确的视图。
......除此之外,Request
是Laravel门面的名称。这就是为什么错误消息表明它在Illuminate \ Support \ Facades \ Request类中寻找get()方法的原因。您希望命名您正在使用的Request类,以便它能够使用正确的get()方法。根据您的版本,我使用控制器文件顶部的use Illuminate\Http\Request;
执行此操作(紧接在控制器的命名空间声明之后)。