三、验证您的应用

在本章中,我们将介绍:

  • 设置和配置授权库
  • 创建认证系统
  • 登录后检索和更新用户信息
  • 限制对某些页面的访问
  • 使用混合验证包设置验证
  • 使用 OpenID 进行登录
  • 使用脸书凭据登录
  • 使用推特凭证登录
  • 使用 LinkedIn 登录

简介

许多现代网络应用都包含一些用户注册和登录的方式。为了确保我们的应用和用户信息的安全,我们需要确保每个用户都经过正确的身份验证。Laravel 包含一个很棒的Auth类,使得这个任务非常容易完成。在本章中,我们将从设置我们自己的身份验证系统开始,然后在我们的 Laravel 应用中使用第三方身份验证。

设置和配置授权库

要使用 Laravel 的身份验证系统,我们需要确保它设置正确。在本食谱中,我们将看到完成设置的常见方法。

做好准备

要设置身份验证,我们只需要安装 Laravel 并运行一个 MySQL 实例。

怎么做...

要完成此配方,请遵循以下步骤:

  1. 进入你的app/config/session.php配置文件,确保它设置为使用native :

    ```php 'driver' => 'native'

    ```

  2. app/config/auth.php配置文件默认值应该没问题,但请确保它们设置如下:

    php 'driver' => 'eloquent', 'model' => 'User', 'table' => 'users',

  3. 在 MySQL 中,创建一个名为authapp的数据库,并确保app/config/database.php配置文件中的设置是正确的。以下是我们将使用的设置:

    ```php 'default' => 'mysql',

    'connections' => array(

    'mysql' => array(
        'driver'   => 'mysql',
        'host'     => 'localhost',
        'database' => 'authapp',
        'username' => 'root',
        'password' => '',
        'charset'  => 'utf8',
        'prefix'   => '',
    ),
    

    ), ```

  4. 我们将使用迁移和模式构建器以及 Artisan 命令行来设置我们的Users表,因此我们需要创建我们的迁移表:

    ```php php artisan migrate:install

    ```

  5. 为我们的Users表创建迁移:

    ```php php artisan migrate:make create_users_table

    ```

  6. app/database/migrations目录中,会有一个新文件,其文件名是日期后跟create_users_table.php。在该文件中,我们创建我们的表:

    ```php <?php

    use Illuminate\Database\Migrations\Migration;

    class CreateUsersTable extends Migration {

    /**
    * Run the migrations.
    *
    * @return void
    */
    public function up()
    {
        Schema::create('users', function($table)
        {
            $table->increments('id');
            $table->string('email');
            $table->string('password', 64);
            $table->string('name');
            $table->boolean('admin');
            $table->timestamps();
        });
    
    }
    
    /**
    * Reverse the migrations.
    *
    * @return void
    */
    public function down()
    {
        Schema::drop('users');
    }
    

    } ```

  7. 在 Artisan 中运行迁移来创建我们的表,所有的东西都应该设置好:

    ```php php artisan migrate

    ```

它是如何工作的...

身份验证使用会话来存储用户信息,因此我们首先需要确保我们的会话配置正确。存储会话有多种方法,包括使用数据库或 Redis,但出于我们的目的,我们将只使用native驱动程序,它利用 Symfony 的本机会话驱动程序。

当设置身份验证配置时,我们将使用雄辩的 ORM 作为我们的驱动程序,一个电子邮件地址作为我们的用户名,模型将是用户。Laravel 附带了一个默认的用户模型,它开箱即用,非常好用,所以我们将使用它。为了简单起见,我们将保持表名的默认配置,即模型类名的复数形式,但是如果我们愿意,我们可以对其进行定制。

一旦我们确定设置了数据库配置,我们就可以使用 Artisan 创建我们的迁移。在我们的迁移中,我们将创建我们的用户表,并存储电子邮件地址、密码、名称和一个布尔字段来存储用户是否是管理员。一旦完成,我们运行迁移,我们的数据库将被设置来构建我们的身份验证系统。

创建认证系统

在这个食谱中,我们将创建一个简单的认证系统。它可以原样使用,也可以扩展以包含更多功能。

做好准备

我们将使用在设置和配置授权库配方中创建的代码作为我们认证系统的基础。

怎么做...

要完成此食谱,请遵循以下步骤:

  1. 在我们的routes.php文件中创建一条路线来保存我们的登记表:

    php Route::get('registration', function() { return View::make('registration'); });

  2. 通过在名为registration.php :

    ```php <!DOCTYPE html>

    Laravel Authentication - Registration

    Laravel Authentication - Registration

    <?php $messages = $errors->all('

    :message

    ') ?> <?php foreach ($messages as $msg): ?> <?= $msg ?> <?php endforeach; ?>

    <?= Form::open() ?> <?= Form::label('email', 'Email address: ') ?> <?= Form::text('email', Input::old('email')) ?>
    <?= Form::label('password', 'Password: ') ?> <?= Form::password('password') ?>
    <?= Form::label('password_confirm','Retype Password: ') ?> <?= Form::password('password_confirm') ?>
    <?= Form::label('name', 'Name: ') ?> <?= Form::text('name', Input::old('name')) ?>
    <?= Form::label('admin', 'Admin?: ') ?> <?= Form::checkbox('admin','true',Input::old('admin')) ?>
    <?= Form::submit('Register!') ?> <?= Form::close() ?> ```

    app/views中创建新文件来创建注册表单 3. 制作处理注册页面的路线:

    ```php Route::post('registration', array('before' => 'csrf',function() { $rules = array( 'email' => 'required|email|unique:users', 'password' => 'required|same:password_confirm', 'name' => 'required' ); $validation = Validator::make(Input::all(), $rules);

    if ($validation->fails())
    {
        return Redirect::to('registration')->withErrors($validation)->withInput();
    }
    
    $user           = new User;
    $user->email    = Input::get('email');
    $user->password = Hash::make(Input::get('password'));
    $user->name     = Input::get('name');
    $user->admin    = Input::get('admin') ? 1 : 0;
    if ($user->save())
    {
        Auth::loginUsingId($user->id);
        return Redirect::to('profile');
    }
    return Redirect::to('registration')->withInput();
    

    })); ```

  3. 通过在routes.php :

    php Route::get('profile', function() { if (Auth::check()) { return 'Welcome! You have been authorized!'; } else { return 'Please <a href="login">Login</a>'; } });

    中添加路线,为我们的档案创建一个简单的 y 页面 5. 在routes.php中创建一条登录路径,保存登录表单:

    php Route::get('login', function() { return View::make('login'); });

  4. 在我们的app/views目录中,创建一个名为login.php :

    ```php <!DOCTYPE html>

    Laravel Authentication - Login

    Laravel Authentication - Login

    <?= '' .Session::get('login_error') . '' ?>
        <?= Form::open() ?>
        <?= Form::label('email', 'Email address: ') ?>
        <?= Form::text('email', Input::old('email')) ?>
        <br>
        <?= Form::label('password', 'Password: ') ?>
        <?= Form::password('password') ?>
        <br>
        <?= Form::submit('Login!') ?>
        <?= Form::close() ?>
    </body>
    

    ```

    的文件 7. 在routes.php中创建路线以验证登录:

    ```php Route::post('login', function() { $user = array( 'username' => Input::get('email'), 'password' => Input::get('password') );

    if (Auth::attempt($user))
    {
        return Redirect::to('profile');
    }
    
    return Redirect::to('login')->with('login_error','Could not log in.');
    

    }); ```

  5. routes.php中创建一个安全页面的路线:

    php Route::get('secured', array('before' => 'auth', function() { return 'This is a secured page!'; }));

它是如何工作的...

首先,我们创建一个相当简单的注册系统。在我们的注册表单中,我们将询问电子邮件地址、密码、密码确认、姓名,然后选择用户是否是管理员。在表单字段中,我们还添加了Input::old();因此,如果表单没有正确验证,我们可以重新填充字段,而不需要用户重新输入所有信息。

然后我们的表单发布,添加 CSRF 过滤器,并通过一些验证。如果验证通过,我们将创建用户模型的新实例,并从表单中添加字段。对于密码,我们使用Hash::make()来保证密码的安全。由于我们的管理字段接受一个布尔值,我们可以看到管理复选框是否被选中;如果是,我们将该值设置为1

如果一切保存正确,我们可以通过将刚刚创建的用户 ID 传递给Auth::loginUsingId()来自动登录用户,并将其重定向到配置文件页面。

配置文件路由做的第一件事是运行Auth::check()查看用户是否实际登录。如果他/她不是,它将显示登录页面的链接。

登录页面是一个简单的表单,要求输入电子邮件 ID 和密码。当提交时,我们将这两个值放在一个数组中,并将它们传递给Auth::attempt(),它将自动散列我们的密码,并在数据库中查找凭据。如果成功,Auth类将设置一个会话,我们将用户重定向到配置文件页面。

如果用户碰巧尝试访问安全的路线,系统会将他们指引到登录页面。使用 Laravel 的Redirect::intended(),我们可以引导他们回到他们最初试图访问的页面。

另见

  • 设置和配置授权库配方

登录后检索更新用户信息

用户登录后,我们需要获得关于他/她的信息。在这个食谱中,我们将看到如何获得这些信息。

做好准备

我们将使用在设置和配置授权库创建认证系统中创建的代码作为该配方的基础。

怎么做...

要完成此配方,请遵循以下步骤:

  1. 用此代码更新配置文件路线:

    php Route::get('profile', function() { if (Auth::check()) { return View::make('profile')->with('user',Auth::user()); } else { return Redirect::to('login')->with('login_error','You must login first.'); } });

  2. 通过创建名为profile.php :

    php <?php echo Session::get('notify') ? "<p style='color: green'>" . Session::get('notify') . "</p>" : "" ?> <h1>Welcome <?php echo $user->name ?></h1> <p>Your email: <?php echo $user->email ?></p> <p>Your account was created on: <?php echo $user ->created_at ?></p> <p><a href="<?= URL::to('profile-edit') ?>">Edit your information</a></p>

    的文件,在app/views目录中创建我们的个人资料视图 3. 制作一个路径来保存我们的表单以编辑信息:

    php Route::get('profile-edit', function() { if (Auth::check()) { $user = Input::old() ? (object) Input::old() :Auth::user(); return View::make('profile_edit')->with('user',$user); } });

  3. 为我们的编辑表单创建一个视图:

    php <h2>Edit User Info</h2> <?php $messages = $errors->all('<p style="color:red">:message</p>') ?> <?php foreach ($messages as $msg): ?> <?= $msg ?> <?php endforeach; ?> <?= Form::open() ?> <?= Form::label('email', 'Email address: ') ?> <?= Form::text('email', $user->email) ?> <br> <?= Form::label('password', 'Password: ') ?> <?= Form::password('password') ?> <br> <?= Form::label('password_confirm', 'Retype Password: ') ?> <?= Form::password('password_confirm') ?> <br> <?= Form::label('name', 'Name: ') ?> <?= Form::text('name', $user->name) ?> <br> <?= Form::submit('Update!') ?> <?= Form::close() ?>

  4. 制作表格处理路线:

    ```php Route::post('profile-edit', function() { $rules = array( 'email' => 'required|email', 'password' => 'same:password_confirm', 'name' => 'required' ); $validation = Validator::make(Input::all(), $rules);

    if ($validation->fails())
    {
        return Redirect::to('profile-edit')->withErrors($validation)->withInput();
    }
    
    $user = User::find(Auth::user()->id);
    $user->email = Input::get('email');
    if (Input::get('password')) {
        $user->password = Hash::make(Input::get('password'));
    }
    $user->name = Input::get('name');
    if ($user->save())
    {
        return Redirect::to('profile')->with('notify','Information updated');
    }
    return Redirect::to('profile-edit')->withInput();
    

    }); ```

它是如何工作的...

要获取我们的用户信息并允许他/她更新它,我们首先要对我们的个人资料路线进行返工。我们创建一个纵断面图,并在变量$user中将Auth::user()传递给它。然后,在视图文件中,我们简单地回显我们收集的任何信息。我们还创建了一个链接,指向用户可以编辑其信息的页面。

我们的配置文件编辑页面首先检查以确保用户已登录。如果是,我们希望填充$user变量。因为如果有验证错误,我们将重新显示表单,所以我们首先检查Input::old()中是否有任何内容。如果没有,这可能是一个新的访问页面,所以我们只使用Auth::user()。如果正在使用Input::old(),我们将把它重铸为一个对象,因为它通常是一个数组,并在我们的$user变量中使用它。

我们的编辑视图表单与我们的注册表单非常相似,只是如果我们已经登录,表单已经被填充。

当表单被提交时,它会通过一些验证。如果一切都有效,我们需要从数据库中获取用户,使用User::find()和存储在Auth::user()中的用户标识。然后,我们将表单输入添加到用户对象中。对于密码字段,如果留空,我们可以假设用户不想更改它。所以我们只有在输入了某些内容的情况下才会更新密码。

最后,我们保存用户信息,并将他/她重定向回个人资料页面。

还有更多...

我们数据库中的电子邮件值可能需要是唯一的。对于这个方法,我们可能需要快速检查用户的表,并确保正在更新的电子邮件地址没有在其他地方使用。

另见

  • 创建认证系统配方

限制对某些页面的访问

在这个食谱中,我们将探索如何限制对我们应用中各种页面的访问。通过这种方式,我们可以使页面只对那些拥有正确凭证的人可见。

做好准备

我们将使用在设置和配置授权库创建认证系统中创建的代码作为该配方的基础。

怎么做...

要完成此配方,请遵循以下步骤:

  1. 在我们的filters.php文件中创建一个过滤器,用于检查登录的用户。默认的 Laravel auth过滤器可以:

    php Route::filter('auth', function() { if (Auth::guest()) return Redirect::guest('login'); });

  2. filter.php中创建一个过滤器,用于检查用户是否是管理员:

    php Route::filter('auth_admin', function() { if (Auth::guest()) return Redirect::guest('login'); if (Auth::user()->admin != TRUE) return Redirect::to('restricted'); });

  3. 制作一条我们限制为登录用户的路线:

    php Route::get('restricted', array('before' => 'auth', function() { return 'This page is restricted to logged-in users! <a href="admin">Admins Click Here.</a>'; }));

  4. 将设为仅限管理员使用的路线【T2:

    php Route::get('admin', array('before' => 'auth_admin',function() { return 'This page is restricted to Admins only!'; }));

它是如何工作的...

过滤器是 Laravel 强大的一部分,可以用来简化很多任务。Laravel 附带的默认auth过滤器只是检查用户是否登录,如果没有,则将他/她重定向到登录页面。在我们的restricted路线中,我们添加了auth过滤器,以便在执行该功能之前运行。

我们的auth_admin过滤器会检查用户是否登录,并检查用户是否设置为admin。如果没有,他/她将被重定向回正常的受限页面。

使用混合验证包设置验证

可能有些时候我们不想担心存储用户的密码。在这种情况下,OAuth 已经成为一种流行的替代方案,它允许我们基于第三方服务(如脸书或推特)对用户进行身份验证。本食谱将展示如何设置HybridAuth包,使 OAuth 变得容易。

做好准备

对于这个食谱,我们需要一个标准的 Laravel 安装和一种访问命令行界面的方法,这样我们就可以使用 Artisan 命令行实用程序。

怎么做...

要完成此配方,请遵循以下步骤:

  1. 打开我们的应用的composer.json文件,并添加到require部分,所以它应该是这样的:

    php "require": { "laravel/framework": "4.0.*", "hybridauth/hybridauth": "dev-master" },

  2. 在命令行界面,更新 composer 如下:

    ```php php composer.phar update

    ```

  3. app/config目录中,创建一个名为oauth.php :

    php <?php return array( "base_url" => "http://path/to/our/app/oauth/auth", "providers" => array ( "OpenID" => array ("enabled" => true), "Facebook" => array ( "enabled" => TRUE, "keys" => array ("id" => "APP_ID", "secret"=> "APP_SECRET"), "scope" => "email", ), "Twitter" => array ( "enabled" => true, "keys" => array ("key" => "CONSUMER_KEY","secret" => "CONSUMER_SECRET") ), "LinkedIn" => array ( "enabled" => true, "keys" => array ("key" => "APP_KEY", "secret"=> "APP_SECRET") ) ) );

    的新文件

它是如何工作的...

我们首先将混合授权包添加到我们的作曲家文件中。现在,当我们更新 composer 时,它会自动下载软件包并为我们安装。从那时起,我们可以在整个应用中使用该库。

我们的下一步是建立一个配置文件。该文件以一个网址开始,身份验证站点会将用户发送回该网址。该网址应该被路由到一个路由或控制器,在那里我们将运行混合验证并进行实际的身份验证。最后,我们需要为要进行身份验证的站点添加凭据。网站的完整列表可以在杂交网站上找到:http://hybridauth.sourceforge.net/userguide.html

使用 OpenID 登录

如果我们不想在我们的应用中存储我们用户的密码,还有其他使用第三方的认证方式,比如 OAuth 和 OpenID。在这个食谱中,我们将使用 OpenID 来登录我们的用户。

做好准备

对于这个配方,我们需要有一个标准的 Laravel 安装,并完成设置 OAuth 与杂交包配方。

怎么做...

要完成此配方,请遵循以下步骤:

  1. 在我们的app/config目录中,创建一个名为openid_auth.php :

    php <?php return array( "base_url" => "http://path/to/our/app/openid/auth", "providers" => array ( "OpenID" => array ("enabled" => TRUE) ) );

    的新文件 2. 在我们的routes.php文件中,创建一个路径来保存我们的登录表单:

    php Route::get('login', function() { return View::make('login'); });

  2. 在我们的app/views目录中,创建一个名为login.php :

    php <!DOCTYPE html> <html> <head> <title>Laravel Open ID Login</title> <meta charset="utf-8"> </head> <body> <h1>OpenID Login</h1> <?= Form::open(array('url' => 'openid', 'method' =>'POST')) ?> <?= Form::label('openid_identity', 'OpenID') ?> <?= Form::text('openid_identity', Input::old('openid_identity')) ?> <br> <?= Form::submit('Log In!') ?> <?= Form::close() ?> </body> </html>

    的新视图 4. 在routes.php中,创建运行认证的路由:

    ```php Route::any('openid/{auth?}', function($auth = NULL) { if ($auth == 'auth') { try { Hybrid_Endpoint::process(); } catch (Exception $e) { return Redirect::to('openid'); } return; }

    try {
        $oauth = new Hybrid_Auth(app_path(). '/config/openid_auth.php');
        $provider = $oauth->authenticate('OpenID',array('openid_identifier' =>Input::get('openid_identity')));
        $profile = $provider->getUserProfile();
    }
    catch(Exception $e) {
        return $e->getMessage();
    }
    echo 'Welcome ' . $profile->firstName . ' ' . $profile->lastName . '<br>';
    echo 'Your email: ' . $profile->email . '<br>';
    dd($profile);
    

    }); ```

它是如何工作的...

我们首先为混合验证库创建一个配置文件,设置认证后用户将被重定向的网址,并启用 OpenID。

接下来,我们创建一个路线和一个视图,用户可以在其中输入他们想要使用的 OpenID 网址。一个流行的是谷歌,所以我们建议使用网址https://www.google.com/accounts/o8/id,甚至让它自动设置为表单中的一个值。

提交表单后,我们应该被引导到 OpenID 网站的身份验证系统,然后重定向回我们的网站。在那里,我们可以显示用户名和电子邮件 ID,并显示所有发回的信息。

还有更多...

更多关于 OpenID 提供的信息可在http://openid.net/developers/specs/获得。

使用脸书凭据登录

如果我们不想担心存储用户的信息和凭证,我们可以使用 OAuth 向另一个服务进行身份验证。其中最流行的是使用脸书登录。有了 Laravel 和 HybridAuth 库,我们可以很容易地用脸书实现 OAuth 认证。

做好准备

对于此配方,我们需要安装并设置杂交验证包,如使用杂交验证包配方设置 OAuth。

怎么做...

要完成此配方,请遵循以下步骤:

  1. https://developers.facebook.com创建一个新的应用。
  2. 获取应用标识和应用密钥,在app/config目录下,创建一个名为fb_auth.php :

    php <?php return array( "base_url" => "http://path/to/our/app/fbauth/auth", "providers" => array ( "Facebook" => array ( "enabled" => TRUE, "keys" => array ("id" => "APP_ID", "secret" =>"APP_SECRET"), "scope" => "email" ) ) );

    的文件 3. 在routes.php中创建一条路线以按住我们的脸书登录按钮:

    php Route::get('facebook', function() { return "<a href='fbauth'>Login with Facebook</a>"; });

  3. 制作路线处理登录信息并显示:

    ```php Route::get('fbauth/{auth?}', function($auth = NULL) { if ($auth == 'auth') { try { Hybrid_Endpoint::process(); } catch (Exception $e) { return Redirect::to('fbauth'); } return; }

    try {
        $oauth = new Hybrid_Auth(app_path(). '/config/fb_auth.php');
        $provider = $oauth->authenticate('Facebook');
        $profile = $provider->getUserProfile();
    }
    catch(Exception $e) {
        return $e->getMessage();
    }
    echo 'Welcome ' . $profile->firstName . ' '. $profile->lastName . '<br>';
    echo 'Your email: ' . $profile->email . '<br>';
    dd($profile);
    

    }); ```

它是如何工作的...

在获得我们的脸书 API 凭证之后,我们需要用这些凭证和我们的回调 URL 创建一个配置文件。我们还需要传入范围,这是我们可能希望从用户那里获得的任何额外权限。在这种情况下,我们只需要获取他们的电子邮件 ID。

我们的 facebook 登录页面是一个简单的链接,指向我们进行身份验证的路线。然后,用户将被带到脸书登录和/或授权我们的网站,然后重定向回我们的fbauth路线。

在这一点上,我们只是显示返回的信息,但我们也可能希望将信息保存到我们自己的数据库中。

还有更多...

如果我们在本地计算机上使用像 MAMP 或 WAMP 这样的东西进行测试,脸书允许我们使用 localhost 的回调 URL。

使用推特凭证登录

如果我们不想担心存储用户的信息和凭证,我们可以使用 OAuth 向另一个服务进行身份验证。一种流行的登录服务是推特。有了 Laravel 和 HybridAuth 库,我们可以很容易地用 Twitter 实现 OAuth 认证。

做好准备

对于此配方,我们需要安装并设置杂交验证包,如使用杂交验证包配方设置 OAuth。

怎么做...

要完成此配方,请遵循以下步骤:

  1. https://dev.twitter.com/apps新建一个应用。
  2. 获取消费者密钥和消费者秘密,在app/config目录下,创建一个名为tw_auth.php :

    php <?php return array( "base_url" => "http://path/to/our/app/twauth/auth", "providers" => array ( "Twitter" => array ( "enabled" => true, "keys" => array ("key" => "CONSUMER_KEY", "secret" => "CONSUMER_SECRET") ) ) );

    的文件 3. 在routes.php中为我们的推特登录按钮

    php Route::get('twitter', function() { return "<a href='twauth'>Login with Twitter</a>"; });

    创建路线 4. 走路线到处理推特信息:

    ```php Route::get('twauth/{auth?}', function($auth = NULL) { if ($auth == 'auth') { try { Hybrid_Endpoint::process(); } catch (Exception $e) { return Redirect::to('twauth'); } return; }

    try {
        $oauth = new Hybrid_Auth(app_path(). '/config/tw_auth.php');
        $provider = $oauth->authenticate('Twitter');
        $profile = $provider->getUserProfile();
    }
    catch(Exception $e) {
        return $e->getMessage();
    }
    echo 'Welcome ' . $profile->displayName . '<br>';
    echo 'Your image: <img src="' . $profile->photoURL. '">';
    dd($profile);
    

    }); ```

它是如何工作的...

在获得我们的推特应用编程接口凭证后,我们需要用这些凭证和我们的回调网址创建一个配置文件。

然后,我们创建一个推特登录视图,这是一个简单的链接,指向我们进行身份验证的路线。然后,用户将被带到推特上登录和/或授权我们的网站,然后重定向回我们的twauth路线。在这里,我们得到了他们的显示名称和他们的推特图标。

此时,我们只是显示返回的信息,但我们可能还想将信息保存到我们自己的数据库中。

还有更多...

如果我们在本地计算机上使用类似 MAMP 或 WAMP 的东西来测试这一点,推特将不允许本地主机的回调网址,但是我们可以使用127.0.0.1来代替它。

使用 LinkedIn 登录

如果我们不想让担心存储用户信息和凭证,我们可以使用 OAuth 向另一个服务进行身份验证。LinkedIn 是一种流行的登录服务,尤其是商业应用。有了 Laravel 和HybridAuth库,我们可以很容易地用 LinkedIn 实现 OAuth 认证。

做好准备

对于此配方,我们需要安装并设置杂交验证包,如使用杂交验证包配方设置 OAuth。

怎么做...

要完成此配方,请遵循以下步骤:

  1. https://www.linkedin.com/secure/developer新建一个应用。
  2. 获取 API 密钥和密钥,在app/config目录下,创建一个名为li_auth.php :

    php <?php return array( "base_url" => "http://path/to/our/app/liauth/auth", "providers" => array ( "LinkedIn" => array ( "enabled" => true, "keys" => array ("key" => "API_KEY","secret" => "SECRET_KEY") ) ) );

    的文件 3. 在routes.php中为我们的 LinkedIn 登录按钮

    php Route::get('linkedin', function() { return "<a href='liauth'>Login with LinkedIn</a>"; });

    创建路线 4. 走路线到处理领英信息:

    ```php Route::get('liauth/{auth?}', function($auth = NULL) { if ($auth == 'auth') { try { Hybrid_Endpoint::process(); } catch (Exception $e) { return Redirect::to('liauth'); } return; }

    try {
        $oauth = new Hybrid_Auth(app_path(). '/config/li_auth.php');
        $provider = $oauth->authenticate('LinkedIn');
        $profile = $provider->getUserProfile();
    }
    catch(Exception $e) {
        return $e->getMessage();
    }
    echo 'Welcome ' . $profile->firstName . ' ' . $profile->lastName . '<br>';
    echo 'Your email: ' . $profile->email . '<br>';
    echo 'Your image: <img src="' . $profile->photoURL. '">';
    dd($profile);
    

    }); ```

它是如何工作的...

在获得我们的 LinkedIn API 凭据之后,我们需要用这些凭据和我们的回调网址创建一个配置文件。

然后,我们创建一个 LinkedIn 登录视图,其中有一个简单的链接,指向我们进行 LinkedIn 身份验证的路线。然后,用户将被带到领英网站登录和/或授权我们的网站,然后重定向回我们的liauth路线。在这里,我们得到了他们的名字、姓氏、电子邮件 ID 和头像。

此时,我们只是显示返回的信息,但我们可能还想将信息保存到自己的数据库中。