adaojunior/passport-social-grant

Laravel Passport 的社交授权

v4.3.1 2024-08-10 00:46 UTC

README

此包为 OAuth2 服务器添加社交授权。

安装

您可以通过 composer 安装此包

composer require adaojunior/passport-social-grant

包会自动注册其服务提供者。或者您也可以手动在 config/app.php 文件中添加服务提供者

'providers' => [
    // ...
    Adaojunior\PassportSocialGrant\SocialGrantServiceProvider::class,
];

配置

  1. 实现 SocialGrantUserProvider 接口
<?php

namespace App\SocialGrant;

use Laravel\Socialite\Facades\Socialite;
use Illuminate\Contracts\Auth\Authenticatable;
use League\OAuth2\Server\Entities\ClientEntityInterface;
use Adaojunior\PassportSocialGrant\SocialGrantUserProvider;

class UserProvider implements SocialGrantUserProvider
{
    /**
     * Retrieve a user by provider and access token.
     *
     * @param string $provider
     * @param string $accessToken
     * @param ClientEntityInterface $client
     * @return Authenticatable|null
     */
    public function getUserByAccessToken(string $provider, string $accessToken, ClientEntityInterface $client):? Authenticatable
    {

    }
}
  1. SocialGrantUserProvider 接口绑定到您的实现上,在您的应用服务提供者 app/Providers/AppServiceProvider.phpregister 方法中
$this->app->bind(
    Adaojunior\PassportSocialGrant\SocialGrantUserProvider::class,
    App\SocialGrant\UserProvider::class
);

使用

$response = $http->post('http://your.app/oauth/token', [
    'form_params' => [
        'grant_type' => 'social',
        'client_id' => $clientId,
        'client_secret' => $clientSecret,
        'provider' => $providerName, // name of provider (e.g., 'facebook', 'google' etc.)
        'access_token' => $providerAccessToken, // access token issued by specified provider
    ],
]);