カフラ/护照社交授权

Laravel Passport 的社交授权

v4.4.0 2022-02-10 11:54 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. 在您的应用程序服务提供者 app/Providers/AppServiceProvider.phpregister 方法中将 SocialGrantUserProvider 接口绑定到您的实现
$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
    ],
]);