a2workspace/laravel-social-entry

提供一個整合的第三方登入入口

1.0.0 2022-07-17 01:36 UTC

This package is auto-updated.

Last update: 2024-09-04 05:57:53 UTC


README

提供一個幾乎零配置,整合前後端的第三方登入的 API 身份認證接口


特性

  • 基于 Laravel Socialite 的 API 身份認證接口
  • 专为前端 API 接口设计
  • 解决一般登录与社区登录不一致的问题
  • 解决新用户通过社区登录后,需要填写完成注册表格才能完成注册的情况
  • 整合社区账号链接功能
  • 支持多用户模型
  • 兼容 Nuxt.js;参考套件 nuxt-social-entry

快速导航

安装 | 安装

要在项目中使用 SocialEntry,执行以下命令通过 Composer 引入到您的 Laravel 项目中

composer require a2workspace/laravel-social-entry

然后使用 vendor:publish 命令生成配置文件

php artisan vendor:publish --tag=@a2workspace/laravel-social-entry

现在您可以在 config/social-entry.php 中指定要启用的第三方授权登录。

配置 | 配置

在开始使用 SocialEntry 之前,与使用 Laravel Socialite 一样,您必须先将第三方服务设置添加到 config/services.php 中。您可以使用下面的示例或参考说明 Laravel Socialite 配置

一个简单的设置示例

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => env('GITHUB_REDIRECT_URL', '/auth/github/callback'),
],

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('FACEBOOK_REDIRECT_URL', '/auth/facebook/callback'),
],

'google' => [
    'client_id' => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect' => env('GOOGLE_REDIRECT_URL', '/auth/google/callback'),
],

'line' => [
    'client_id' => env('LINE_CHANNEL_ID'),
    'client_secret' => env('LINE_SECRET'),
    'redirect' => env('LINE_REDIRECT_URL', '/auth/line/callback'),
],

.env/.env.example 设置

# See https://github.com/settings/developers
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_REDIRECT_URL=

# See https://developers.facebook.com/apps/?show_reminder=true
FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET=
FACEBOOK_REDIRECT_URL=

# See https://console.cloud.google.com/apis/credentials
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URL=

# See https://developers.line.biz/console/
LINE_CHANNEL_ID=
LINE_SECRET=
LINE_REDIRECT_URL=

这里提供了第三方登录设置页面的链接

注册路由 | 注册路由

接下来,您应该在 App\Providers\AuthServiceProviderboot 方法中调用 SocialEntry::routes 方法来注册路由。

<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
use A2Workspace\SocialEntry\SocialEntry;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array<class-string, class-string>
     */
    protected $policies = [
        // 'App\Models\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        if (! $this->app->routesAreCached()) {
            SocialEntry::routes();
        }
    }
}