我已经谷歌搜索了一段时间了解有关如何将OAuth(v1.0& v2.0)与标准的Laravel 4 Eloquent身份验证驱动程序集成的一些想法或指南。
基本上,我希望网站访问者能够通过现有的Google,Facebook或Twitter帐户或通过标准的电子邮件/密码身份验证创建帐户。某些用户信息(如电子邮件,名字和姓氏以及头像)对我来说非常重要,因为它存储在统一的users
表格中。
到目前为止,我所看到的项目似乎只支持OAuth并取消了标准方法。这些项目包括:eloquent-oauth和oauth-4-laravel。
此时,我可能只是推出自己的解决方案,但我希望你们中的一些人可能对我有更好的建议!
TL; DR :我一直试图找到一种简单安全的方式来在Laravel中允许OAuth和标准的Eloquent用户身份验证。 HALP。
答案 0 :(得分:0)
我认为最简单的方法是使用您提到的服务提供商" artdarek / oauth-4-laravel"然后像往常一样存储值并将其记录下来。
/**
* Login user with facebook
*
* @return void
*/
public function loginWithFacebook() {
// get data from input
$code = Input::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 ( !empty( $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 );
// store new user or login if user exists
$validator = Validator::make($result, array(
'email'=>'required|email|unique:users'
));
if ($validator->passes()) {
# Save user in DB
$user = new User;
$user->username = $result['name'];
$user->email = $result['email'];
$user->save();
}else {
$user = User::findByUsernameOrFail($result['name']);
}
Auth::login($user);
}
// if not ask for permission first
else {
// get fb authorization
$url = $fb->getAuthorizationUri();
// return to facebook login url
return Redirect::to( (string)$url );
}
}