larva/laravel-passport-socialite

这是一个用于社交的 Laravel Passport 授权。

1.0.4 2022-01-14 03:49 UTC

This package is auto-updated.

Last update: 2024-09-14 09:41:12 UTC


README

laravel passport 中缺失的社交认证插件(即 SocialGrant)。

Laravel Passport Socialite

laravel passport 中缺失的社交认证插件(即 SocialGrant)。

描述

此包帮助使用 Laravel 的原生包(即 passport 和 socialite)集成社交登录。此包允许从 Laravel/socialite 包支持的提供商进行社交登录。

入门指南

要开始使用,请使用以下命令将以下包添加到您的 composer.json 文件中。

composer require larva/laravel-passport-socialite -vv

配置

当 composer 成功安装此包后,请在您的 config/app.php 配置文件中注册 Larva\Passport\Socialite\PassportSocialiteGrantProvider::class

'providers' => [
    // Other service providers...
    Larva\Passport\Socialite\PassportSocialiteGrantProvider::class,
],

注意:您需要根据 Laravel Socialite 文档中所述配置第三方社交提供者的密钥和密钥字符串(https://laravel.net.cn/docs/5.6/socialite#configuration

使用

设置您的 User 模型

findAndValidateForPassportSocialite 方法添加到您的 User 模型中,findAndValidateForPassportSocialite 方法接受两个参数 $provider$socialUser

$provider - 字符串 - 您的社交账户提供商。如:facebook, google。

$socialUser - \Larva\Socialite\Contracts\User - 社交服务商获取到的用户实例

函数应该找到与该信息相关的用户并返回用户对象,如果没有找到则返回 null

以下是上述实现后您的 User 模型应如何看起来。

namespace App\Models;

class User extends Authenticatable {
    
    use HasApiTokens, Notifiable;

    /**
    * Find user using social provider's user
    * 
    * @param string $provider Provider name as requested from oauth e.g. facebook
    * @param \Larva\Socialite\Contracts\User $socialUser User of social provider
    *
    * @return User|void
    */
    public static function findAndValidateForPassportSocialiteRequest(string $provider, \Larva\Socialite\Contracts\User $socialUser) {
        if( $socialUser->user) {
            return $socialUser->user;
        }
        
        // 你其他代码,例如自动注册用户 如果你绑定了用户 \Larva\Socialite\Contracts\User 里面有你绑定的用户模型实例
        return;
    }
}