使用laravel-5.4或更高版本中的Socialite软件包与Google登录。

在本节中,我将讨论如何在您的Laravel网站中使用Google帐户登录 Laravel 5.6提供了Socialite软件包,可帮助登录社会认证,例如google,Facebook等。因此,今天我们仅讨论了Google登录。

让我们遵循以下步骤:

首先,我们将安装Socialite软件包,该软件包提供google api以与google连接。 因此,我们需要打开终端并运行以下命令:

 作曲家需要laravel / socialite 

完成软件包安装后,我们需要在app.php添加service provider `和alias

因此,转到目录config/app.php在任何编辑器config/app.php打开文件(我正在使用Sublime 3)

查找提供者将更改放在最后。

提供者

  '提供者'=> [ 
....
Laravel \ Socialite \ SocialiteServiceProvider :: class,
]

别名

  '别名'=> [ 
....
'Socialite'=> Laravel \ Socialite \ Facades \ Socialite :: class,
],

步骤2:建立Google App

在google登录中,我们需要google App ID和密钥,以便我们可以获取其他用户信息。 因此,如果没有Google App ID,我们可以使用此链接创建App ID

  https://console.developers.google.com 

创建帐户后,您可以复制App ID和App Secret Key,然后将APP ID和Secret Key放入.env文件中,并在service.php进行更改。

现在我们在目录“ /config/service.php”中打开service.php,在service.php中添加以下代码

 返回[ 
....
'google'=> [
'client_id'=> env('GOOGLE_CLIENT_ID'),
'client_secret'=> env('GOOGLE_CLIENT_SECRET'),
'redirect'=> env('GOOGLE_CALLBACK_URL'),
],
]

并在.env文件中添加以下代码

  GOOGLE_CLIENT_ID = xxxxxxxxx 
GOOGLE_CLIENT_SECRET = xxxxxxx
GOOGLE_CALLBACK_URL = http:// xxxxxxx / auth / google / callback

步骤3:创建迁移以扩展用户模型,以便在用户表中添加新字段(google_id)。

  <?phpuse Illuminate \ Support \ Facades \ Schema; 
使用Illuminate \ Database \ Schema \ Blueprint;
使用Illuminate \ Database \ Migrations \ Migration;
类CreateAddColumnUsersTable扩展了迁移功能{/ **
*运行迁移。
*
* @返回无效
* /
公共功能up()
{
Schema :: table('users',function(Blueprint $ table){
$ table-> string('google_id')-> nullable()-> after('id');
});
}
/ ***反向迁移。
*
* @返回无效
* /
公共功能down(){
Schema :: table('users',function(Blueprint $ table){
$ table-> string('google_id')-> nullable()-> after('id');
});
}
}

步骤4:在这一步中,我们需要在用户模型中添加字段,该字段是通过迁移添加的。 所以

我们打开`User.php`

  <?phpnamespace应用程序; 
使用照亮\通知\可通知;
使用Illuminate \ Foundation \ Auth \ User作为Authenticateable;
用户扩展Authenticateable {
使用可通知的;
/ **
*可批量分配的属性。
*
* @var数组
* /
受保护的$ fillable = [
'名称','电子邮件','密码','google_id'
];
/ **
*应该为数组隐藏的属性。
*
* @var数组
* /
protected $ hidden = ['password','remember_token',];公共函数addNew($ input)
{
$ check = static :: where('google_id',$ input ['google_id'])-> first();
if(is_null($ check)){
返回static :: create($ input);
}
返回$ check;
}
}

第5步:在这一步中,我们需要制作新的控制器和方法来处理Google回调请求等。 首先在下面的目录中创建新的控制器GoogleController.php

  app / Http / Controllers / Auth 

并将代码放在GoogleController.php中

  <?phpnamespace App \ Http \ Controllers \ Auth; 
使用App \ User;
使用App \ Http \ Controllers \ Controller;
使用社交名流;
使用Exception;
使用Auth;
GoogleController类扩展Controller
{
/ **
*创建一个新的控制器实例。
*
* @返回无效
* /
公共函数redirectToGoogle(){
返回Socialite :: driver('google')-> redirect();
}
/ **
*创建一个新的控制器实例。
*
* @返回无效
* /
公共函数handleGoogleCallback(){试试{$ user = Socialite :: driver('google')-> user();
$ create ['name'] = $ user-> getName();
$ create ['email'] = $ user-> getEmail();
$ create ['google_id'] = $ user-> getId();
$ userModel =新用户;
$ createdUser = $ userModel-> addNew($ create);

Auth :: loginUsingId($ createdUser-> id);
返回redirect()-> route('welcome');
} catch(Exception $ e){
返回重定向('auth / google');
}
}}

第6步:为Google登录创建新路线。

因此,我们需要添加以下波纹管文件route/web.php

  Route :: get('google',function(){return view('google');}); 
路线:: get('auth / google','Auth \ GoogleController @ redirectToGoogle');
路线:: get('auth / google / callback','Auth \ GoogleController @ handleGoogleCallback');

步骤6:在这一步中,我们将google登录按钮设置在需要的位置。 代码如下

Google登录按钮

   使用Google登录  

之后,您可以在您的网站上使用Google登录。
可能是这篇文章可以帮助您在laravel 5或更高版本中进行Google登录。