icehero/silex-opauth

该包已被放弃,不再维护。未建议替代包。
该包最新版本(dev-master)没有可用的许可信息。

Opauth silex 框架服务提供商。

dev-master 2018-03-04 14:54 UTC

This package is not auto-updated.

Last update: 2020-01-15 20:51:42 UTC


README

简单的事件驱动 silex 扩展

    // Configure opauth
    $app['opauth'] = array(
      'login' => '/auth',
      'callback' => '/auth/callback',
      'config' => array(
        'security_salt' => '...your salt...',
        'Strategy' => array(
            'Facebook' => array(
               'app_id' => '...',
               'app_secret' => '...'
             ),
        )
      )
    );

    // Enable extension
    $app->register(new OpauthExtension());

    // Listen for events
    $app->on(OpauthExtension::EVENT_ERROR, function($e) {
        $this->log->error('Auth error: ' . $e['message'], ['response' => $e->getSubject()]);
        $e->setArgument('result', $this->redirect('/'));
    });

    $app->on(OpauthExtension::EVENT_SUCCESS, function($e) {
        $response = $e->getSubject();

        /*
           find/create a user, oauth response is in $response and it's already validated!
           store the user in the session
        */

        $e->setArgument('result', $this->redirect('/'));
    });

高级的 symfony 安全监听器+提供者

注意,你还可以在 symfony2 项目中使用它!

要使用 opauth 登录,请使用 /login/PROVIDER,或使用带有 provider 参数的 opauth_default_login 路由。


    $app->register(new OpauthSilexProvider());
    $app->register(new SecurityServiceProvider(), array(
        'security.firewalls' => array(
            'default' => array(
                'pattern' => '^/.*',
                'opauth' => array(
                    // 'check_path' => '/login/opauth', //default
                    'opauth' => [
                        // 'path' => '/login', //default
                        'security_salt' => '...your salt...',
                        'Strategy' => [
                            // your opauth strategies go here
                        ]
                    ]
                ),
                'anonymous' => true,
            ),
        )
    );

默认情况下,用户将通过 "provider:uid" 用户名来查找。

你应该扩展你的用户提供者,通过实现 OpauthUserProviderInterface 来正确处理 OPauth 结果。