zfort/social-auth

此包已被废弃且不再维护。作者建议使用mad-web/laravel-social-auth包。

易于集成的社交认证,支持大量提供商

dev-master 2017-08-02 17:11 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:06:29 UTC


README

Latest Version on Packagist Software License Build Status StyleCI Quality Score Total Downloads

此包提供以下功能

  • 登录
  • 注册
  • 将社交网络提供商附加/分离到现有账户

安装

通过Composer

$ composer require zfort/social-auth

现在将服务提供者在config/app.php文件中添加

'providers' => [
    // ...
    ZFort\SocialAuth\SocialAuthServiceProvider::class,
];

您可以使用以下命令发布迁移

$ php artisan vendor:publish --provider="ZFort\SocialAuth\SocialAuthServiceProvider" --tag="migrations"

该包假定您的用户表名为"users"。如果情况不是这样,您应手动编辑已发布的迁移以使用自定义的表名。

在迁移发布后,您可以通过运行迁移来创建用于存储受支持提供商和用户_has_social_provider 辅助表的social_providers表

$ php artisan migrate

您可以使用以下命令发布配置文件

$ php artisan vendor:publish --provider="ZFort\SocialAuth\SocialAuthServiceProvider" --tag="config"

这是已发布config/social-auth.php配置文件的内容

return [

    /*
    |--------------------------------------------------------------------------
    | Additional service providers
    |--------------------------------------------------------------------------
    |
    | The social providers listed here will enable support for additional social
    | providers which provided by https://socialiteproviders.github.io/ just
    | add new event listener from the installation guide
    |
    */
    'providers' => [
        //
    ],

    'models' => [
        /*
         * When using the "UserSocialite" trait from this package, we need to know which
         * Eloquent model should be used to retrieve your available social providers. Of course, it
         * is often just the "SocialProvider" model but you may use whatever you like.
         */
        'social' => \ZFort\SocialAuth\Models\SocialProvider::class,
        
        /*
         * User model which you will use as "SocialAuthenticatable"
         */
        'user' => \App\User::class,
    ],

    'table_names' => [

       /*
       |--------------------------------------------------------------------------
       | Users Table
       |--------------------------------------------------------------------------
       |
       | The table for storing relation between users and social providers. Also there is
       | a place for saving "user social network id", "token", "expiresIn" if it exist
       |
       */
        'user_has_social_provider' => 'user_has_social_provider',

        /*
        |--------------------------------------------------------------------------
        | Social Providers Table
        |--------------------------------------------------------------------------
        |
        | The table that contains all social network providers which your application use.
        |
        */
        'social_providers' => 'social_providers'
    ],

    'foreign_keys' => [

        /*
         * The name of the foreign key to the users table.
         */
        'users' => 'user_id',

        /*
         * The name of the foreign key to the socials table
         */
        'socials' => 'social_id'
    ],

    /*
    |--------------------------------------------------------------------------
    | Authentication redirection
    |--------------------------------------------------------------------------
    |
    | Redirect path after success/error login via social network
    |
    */
    'redirect' => '/home'
];

或者,您可以使用以下命令发布和修改视图模板

$ php artisan vendor:publish --provider="ZFort\SocialAuth\SocialAuthServiceProvider" --tag="views"

您还可以使用以下命令发布和修改翻译文件

$ php artisan vendor:publish --provider="ZFort\SocialAuth\SocialAuthServiceProvider" --tag="lang"
将凭证添加到您的项目

文件 .env

FB_ID = <FacebookID>
FB_SECRET = <FacebookSecret>
FB_REDIRECT = <your.domain>/social/facebook/callback

GOOGLE_ID = <GoogleID>
GOOGLE_SECRET = <GoogleSecret>
GOOGLE_REDIRECT = <your.domain>/social/google/callback

GITHUB_ID = <GithubID>
GITHUB_SECRET = <GithubSecret>
GITHUB_REDIRECT = <your.domain>/social/github/callback

文件 config/services.php

    'facebook' => [
        'client_id'     => env('FB_ID'),
        'client_secret' => env('FB_SECRET'),
        'redirect'      => env('FB_REDIRECT')
    ],

    'google' => [
        'client_id'     => env('GOOGLE_ID'),
        'client_secret' => env('GOOGLE_SECRET'),
        'redirect'      => env('GOOGLE_REDIRECT')
    ],
    
    'github' => [
        'client_id'     => env('GITHUB_ID'),
        'client_secret' => env('GITHUB_SECRET'),
        'redirect'      => env('GITHUB_REDIRECT')
    ]

之后,在数据库中创建您的社交提供商

SocialProvider::create(['label' => 'Facebook', 'slug' => 'facebook']);
SocialProvider::create(['label' => 'Google', 'slug' => 'google']);
SocialProvider::create(['label' => 'github', 'slug' => 'Github']);

或者直接添加行

您可以在社交认证请求中添加额外的作用域和参数

SocialProvider::create([
    'label' => 'github',
    'slug' => 'Github',
    'scopes' => ['foo', 'bar'],
    'parameters' => ['foo' => 'bar']
]);

以覆盖默认作用域

$SocialProvider->setScopes(['foo', 'bar'], true);
将社交按钮添加到您的模板
 @include('social-auth::attach') // for authenticated user to attach/detach another socials
 @include('social-auth::buttons') // for guests to login via
准备您的用户模型

实现SocialAuthenticatable接口

将UserSocialite trait添加到您的User模型

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use ZFort\SocialAuth\Traits\UserSocialite;
use ZFort\SocialAuth\Contracts\SocialAuthenticatable;

class User extends Model implements SocialAuthenticatable
{
    use UserSocialite;
   ...
}
路由

如果您需要自定义社交流程,您应定义自己的控制器并将自定义URL放入路由文件。

例如

Route::get('social/{social}', 'Auth\SocialAuthController@getAccount');
Route::get('social/{social}/callback', 'Auth\SocialAuthController@callback');
Route::get('social/{social}/detach', 'SocialAuthController@deleteAccount');

如果您不需要任何特殊功能,您可以使用我们的默认控制器

为您的项目定制
自定义用户模型

用户模型我们从config('social-auth.models.user')中获取

用户字段映射

包含用于将社交字段映射到用户模型的mapSocialData方法的SocialAuthenticatable接口。如果需要,您可以在UserModel中重新定义此方法以适应您偏好项目

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

测试

$ composer test

贡献

请参阅贡献指南行为准则以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件发送至developer@zfort.com,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件