我正在使用facebook JS将用户登录到laravel 5应用程序.
我能够将信息正确地添加到数据库,但是我试图手动登录用户,但无法弄清楚.
这是我的控制器:
<?PHP namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\lib\TopAdditions;
use App\Http\lib\GeneralFunctions;
use App\User;
class FacebookLoginController extends Controller{
public function FacebookRegistration(){
$facebook = new User();
$isThereAUser = User::where('name', $_GET['name'])->get();
if(!count($isThereAUser) > 0){
$facebook->name = $_GET['name'];
$facebook->email = $_GET['email'];
$facebook->password = sha1($_GET['password']);
$facebook->remember_token = $_GET['token'];
$facebook->save();
$id = User::where('name', $_GET['name'])->get();
$this->LoginUser($id);
}
}
public function LoginUser($id){
\Auth::login($id[0]['id'],true);
}
}
当我运行该命令并且数据库中没有此类用户时,将创建该用户,并且在尝试手动登录时收到以下消息:
ErrorException in Guard.PHP line 425:
Argument 1 passed to Illuminate\Auth\Guard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, integer given
我一直在网上寻找类似的情况,但找不到任何有帮助的…
请帮我!
解决方法:
您应该将用户对象(而不是ID)传递给Auth :: login.因此,只需将您的功能更改为这样:
public function LoginUser($user){
\Auth::login($user, true);
}