php – Laravel 5通过外部API验证用户
我想知道是否可以扩展内置身份验证以使用外部API来验证用户?我是一个Laravel新手,所以我很感激你的帮助.
我正在为我的客户端在Laravel 5.2中创建一个自定义应用程序,但我不能直接访问他们的数据库服务器,我只能调用他们的API来获取用户的详细信息. 谢谢. 解决方法
如果我理解正确,你想从facebook,twitter或
github等API登录用户?如果是这样你需要使用名为Socialite的laravel包,这里是下载和使用它的链接:
https://github.com/laravel/socialite 运行你的命令: composer require laravel/socialite 接下来你需要告诉laravel你想要使用这个包,所以你需要在config / app.php中添加它: 'providers' => [ // Other service providers... LaravelSocialiteSocialiteServiceProvider::class,], 这是别名: 'Socialite' => LaravelSocialiteFacadesSocialite::class, 基本上,你需要在开发者网站上创建一个应用程序,我将把facebook作为这个例子.你需要去这个网站: 在你的config / services文件中,在条带之后添加: 'facebook' => [ 'client_id' => env('FACEBOOK_ID'),'client_secret' => env('FACEBOOK_SECRET'),'redirect' => env('FACEBOOK_URL'), 在你的.env文件中: FACEBOOK_ID=*your facebook id* FACEBOOK_SECRET=*your facebook secret* FACEBOOK_URL=http://yourwebsite.com/callback 接下来,您将需要一个控制器来处理身份验证过程,创建类似SocialAuthController的东西并将其放入: public function redirect() { return Socialite::driver('facebook')->redirect(); } public function callback() { $user = $this->findOrCreateFbUser(Socialite::driver('facebook')->user()); session([ 'user' => $user ]); return redirect()->route('/'); } public function logout() { session()->forget('user'); return redirect()->route('home'); } protected function findOrCreateFbUser($fbUser) { // the data you want to get from facebook $fbData = [ 'facebook_id' => $fbUser->id,'avatar' => $fbUser->avatar,'username' => $fbUser->name,'email' => $fbUser->email,]; $user = AppUser::where('facebook_id',$fbData['facebook_id'])->first(); if(!$user) $user = AppUser::create($fbData); $user->update([ 'avatar' => $fbUser->avatar,'username' => $fbUser->name,'email' => $fbUser->email ]); return $user; } 当然,您需要在用户数据库和模型中添加facebook_id字段. protected $fillable = [ 'facebook_id','username','email','avatar' ]; 我知道这个解决方案并不是真正的动态,因为它只适用于一个api,我在Laravel上也是新手,这是我对stackoverflowquestion的第一个答案,但这对我来说很有用:)如果我忘记了什么东西不要犹豫告诉我,我可以更新这个答案.. 我还建议你在Laracasts网站上关注Jeffrey Way关于社交认证的教程,它非常有启发性和清晰,我可以通过他来管理它! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |