我正在将Facebook登录集成到我的新Laravel 5.1中。用户可以选择使用Facebook登录或传统表单登录手动登录。到目前为止,我拥有实施传统的登录NotFoundHttp异常(未找到控制器方法) - Laravel 5.1 Facebook登录
对于Laravel社会名流没问题,我想我已经设置正确
composer.json
"laravel/socialite": "^2.0",
配置/ app.php
'providers' => [
/*
* Laravel Framework Service Providers...
*/
.........
.........
Illuminate\Html\HtmlServiceProvider::class,
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Laracasts\Flash\FlashServiceProvider::class,
Laracasts\Generators\GeneratorsServiceProvider::class,
AlgoliaSearch\Laravel\AlgoliaServiceProvider::class,
Laravel\Socialite\SocialiteServiceProvider::class,
],
AuthController
<?php
namespace App\Http\Controllers\Auth;
use Socialite;
//use Illuminate\Routing\Controller;
use App\User;
use Validator;
use Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/admin';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'getLogout']);
}
//temporarily redirected to duterte-run.mendanielle.com
public function getRegister()
{
return view('auth.login');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'username' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
/**
* Redirect the user to the GitHub authentication page.
*
* @return Response
*/
public function redirectToProvider()
{
return Socialite::driver('facebook')->redirect();
}
/**
* Obtain the user information from GitHub.
*
* @return Response
*/
public function handleProviderCallback()
{
// try {
$user = Socialite::driver('facebook')->user();
// } catch (Exception $e) {
// return redirect('auth/facebook');
// }
// $authUser = $this->findOrCreateUser($user);
// Auth::login($authUser, true);
// return redirect()->route('home');
}
routes.php文件
Route::get('/auth/facebook', 'Auth\[email protected]');
Route::get('/auth/facebook/callback', 'Auth\[email protected]');
// Logging in and out
get('/auth/login', 'Auth\[email protected]');
post('/auth/login', 'Auth\[email protected]');
get('/auth/logout', 'Auth\[email protected]');
登录表单
<form class="form-horizontal" role="form" method="POST" action="{{ url('/auth/login') }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input type="email" class="form-control" name="email" value="{{ old('email') }}">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password">
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<div class="checkbox">
<label><input type="checkbox" name="remember"> Remember Me</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">Login</button>
<a class="btn btn-link" href="{{ url('/password/email') }}">Forgot Your Password?</a>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<a class="btn btn-link" href="{{ url('/auth/facebook') }}">Login With Facebook</a>
</div>
</div>
</form>
我也跟着在Laravel.com网站最新的文档了,里面services.php
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('CALL_BACK_URL'),
],
而.ENV文件
FACEBOOK_CLIENT_ID=1834566497828637244
FACEBOOK_CLIENT_SECRET=9505676d1f50bty7b613baa7b68786op5ba48
CALL_BACK_URL=http://localhost:9090/auth/login
登录按钮将我重定向到
localhost:9090/auth/facebook
NotFoundHttpException in Controller.php line 269:
Controller method not found.
在控制器 - > missingMethod( '实') 在call_user_func_array(阵列(对象('_ missing'=>'facebook'))在Controller-> callAction('missingMethod')中的数组('AuthController','missingMethod'),数组('_ missing'=>'facebook'))在ControllerDis中在ControllerDispatcher.php中的ControllerDispatcher-> call(对象(AuthController),对象(Route),'missingMethod')行中的patcher.php行164 行112 at ControllerDispatcher-> Illuminate \ Routing {closure}(object(Request)) 在call_user_func(对象(闭合),对象(请求))在Pipeline.php线139 在Pipeline->照亮\管道{闭合}在RedirectIfAuthenticated.php线(对象(请求))41
那么什么是正确的方式?你如何将Laravel 5.1集成到Socialite中?
更新
我看到这个 '奇怪' 的结果在PHP工匠路线:列表
GET|HEAD|POST|PUT|PATCH|DELETE | auth/{_missing} | App\Http\Controllers\Auth\[email protected] | guest |
刚下
| auth/facebook|App\Http\Controllers\Auth\[email protected]
不要公开你的Facebook客户端ID /秘密 – manix
其唯一的一个虚拟 –