scottybo / socialite-wordpress-wp-oauth-server

为使用WP OAuth2 Server插件的WordPress自托管站点提供的Laravel Socialite提供程序

v1.0.3 2018-08-23 13:31 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:18:26 UTC


README

先决条件

为了将Socialite与自托管的Wordpress安装连接,您需要在该站点上安装并设置https://wp-oauth.com/。请参阅他们的文档:https://wp-oauth.com/documentation/

1. 安装

// This assumes that you have composer installed globally
composer require scottybo/socialite-wordpress-wp-oauth-server

2. 服务提供者

  • 如果已经添加,请从config\app.php中的providers[]数组中移除Laravel\Socialite\SocialiteServiceProvider

  • \SocialiteProviders\Manager\ServiceProvider::class添加到config\app.php中的providers[]数组。

例如

'providers' => [
    // a whole bunch of providers
    // remove 'Laravel\Socialite\SocialiteServiceProvider',
    \SocialiteProviders\Manager\ServiceProvider::class, // add
];
  • 注意:如果您想使用Socialite外观,您需要安装它。

3. 事件监听器

  • SocialiteProviders\Manager\SocialiteWasCalled事件添加到app/Providers/EventServiceProvider中的listen[]数组。

  • 将您的监听器(即来自提供者的监听器)添加到您刚刚创建的SocialiteProviders\Manager\SocialiteWasCalled[]

  • 为此提供程序添加的监听器是'SocialiteProviders\\WordPressSelfHosted\\WordPressSelfHostedExtendSocialite@handle',

  • 注意:除非您使用自己的提供者覆盖它们,否则您不需要为内置的socialite提供程序添加任何内容。

例如

/**
 * The event handler mappings for the application.
 *
 * @var array
 */
protected $listen = [
    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        // add your listeners (aka providers) here
        'SocialiteProviders\\WordPressSelfHosted\\WordPressSelfHostedExtendSocialite@handle',
    ],
];

参考

4. 配置设置

您需要向服务配置文件中添加一个条目,以便在配置文件缓存以用于生产环境(Laravel命令artisan config:cache)后,所有配置仍然可用。

添加到config/services.php

'wordpress_self_hosted' => [
    'client_id' => env('WORDPRESS_SELF_HOSTED_KEY'),
    'client_secret' => env('WORDPRESS_SELF_HOSTED_SECRET'),
    'redirect' => env('WORDPRESS_SELF_HOSTED_REDIRECT_URI')
    'endpoints' => [
        'authorize' => 'https://www.thirty.site/oauth/authorize/',
        'introspection' => 'https://www.thirty.site/oauth/introspection/',
        'me' => 'https://www.thirty.site/oauth/me/',
        'token' => 'https://www.thirty.site/oauth/token/',
    ]
],

例如

'wordpress_self_hosted' => [
    'client_id' => 'abc123',
    'client_secret' => 'abc123',
    'redirect' => 'https://app.laravel.site/auth/wordpress_self_hosted/callback';
    'endpoints' => [
        'authorize' => 'https://www.selfhosted.site/oauth/authorize/',
        'introspection' => 'https://www.selfhosted.site/oauth/introspection/',
        'me' => 'https://www.selfhosted.site/oauth/me/',
        'token' => 'https://www.selfhosted.site/oauth/token/',
    ]
],

5. 使用

return Socialite::with('WordPressSelfHosted')->redirect();

Lumen支持

您可以使用Socialite提供程序与Lumen一起使用。只需确保您已启用外观支持,并且正确遵循设置说明。

注意:如果您使用Lumen,所有提供程序都将自动无状态,因为Lumen不会跟踪状态。

此外,在Lumen中无法从services[]解析配置。您只能在.env文件中设置值,如本文件中所示。如果需要,您还可以覆盖配置(如下所示)。

无状态

  • 您可以设置是否想以无状态的方式使用提供程序。请记住,OAuth提供程序(Twitter、Tumblr等)必须支持您选择的选项。

注意:如果您使用Lumen,所有提供程序都将自动无状态,因为Lumen不会跟踪状态。

// to turn off stateless
return Socialite::with('WordPressSelfHosted')->stateless(false)->redirect();

// to use stateless
return Socialite::with('WordPressSelfHosted')->stateless()->redirect();

覆盖配置

如果您需要在应用程序的任何地方动态覆盖提供者的环境或配置变量,您可以使用以下方法

$clientId = "secret";
$clientSecret = "secret";
$redirectUrl = "http://yourdomain.com/api/redirect";
$additionalProviderConfig = ['site' => 'meta.stackoverflow.com'];
$config = new \SocialiteProviders\Manager\Config($clientId, $clientSecret, $redirectUrl, $additionalProviderConfig);
return Socialite::with('WordPressSelfHosted')->setConfig($config)->redirect();

检索访问令牌响应体

Laravel Socialite默认只允许访问access_token。这可以通过访问\Laravel\Socialite\User->token公共属性来访问。有时您需要访问整个响应体,这可能包含如refresh_token之类的项目。

您可以通过访问属性$user->accessTokenResponseBody在调用Socialite中的user()方法后获取访问令牌响应体;

$user = Socialite::driver('WordPressSelfHosted')->user();
$accessTokenResponseBody = $user->accessTokenResponseBody;

参考