org_heigl/hybridauth

基于 hybridauth-library 的轻量级认证模块,用于 Zend-Framework 2

3.0.0 2017-02-15 06:25 UTC

README

Join the chat at https://gitter.im/heiglandreas/HybridAuth

Build Status Code Climate Scrutinizer Code Quality Codacy Badge Coverage Status

Dependency Status Total Downloads Latest Stable Version Stories in Ready

使用 SocialConnect-Library 为您的 ZendFramework3-App 创建一个绝对轻量级的认证层

您可以使用所有 支持的社交网络登录 进行登录。网络和包含 id、名称、邮箱和语言的用户对象将存储在会话中。如果您已经在您的应用程序中有了社交网络用户,您可以使用这些用户进行用户授权。

需求

  • SocialConnect-Library。这个库使用的是版本 3,目前还不稳定!
  • Zend Framework3(嗯,显然,对吧?)

用法

  1. 在您的 application.conf 文件中,将模块添加到模块列表中

  2. 将文件 vendor/org_heigl/hybridauth/config/autoload/module-orgHeiglHybridAuth.local.php 复制到您的应用程序的 config/autoload 目录,并按需修改。可能看起来像这样

    return [
        'OrgHeiglHybridAuth' => [
            'socialAuth' => [
                'redirectUri' => 'http://localhost:8080/authenticate/backend',
                'provider' => [
                    'twitter' => [
                        'applicationId' => '',
                        'applicationSecret' => '',
                        'scope' => ['email'],
                    ],
                    'github' => [
                        'applicationId' => '',
                        'applicationSecret' => '',
                        'scope' => ['email'],
                    ],
                ],
            ],
            'session_name' => 'orgheiglhybridauth',
            'backend'         => array('Twitter'), // could also be ['Twitter', 'Facebook']
            // 'link'            => '<a class="hybridauth" href="%2$s">%1$s</a>', // Will be either inserted as first parameter into item or simply returned as complete entry
            // 'item'            => '<li%2$s>%1$s</li>',
            // 'itemlist'        => '<ul%2$s>%1$s</ul>',
            // 'logincontainer'  => '<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">%1$s<b class="caret"></b></a>%2$s</li>',
            // 'logoffcontainer' => '<li>%1$s</li>',
            // 'logoffstring'    => 'Logout %1$s',
            // 'loginstring'     => 'Login%1$s',
            // 'listAttribs'     => null, // Will be inserted as 2nd parameter into item
            // 'itemAttribs'     => null, // Will be inserted as 2nd parameter into itemlist
        ]
    ];
  3. 添加此代码片段以创建登录链接

    <?php
    $provider = "Twitter";
    echo $this->hybridauthinfo($provider);
    ?>
  4. 登录后,您可以按以下方式访问用户信息

    $config = $this->getServiceLocator()->get('Config');
    $config = $config['OrgHeiglHybridAuth'];
    $hybridAuth = new Hybridauth($config['hybrid_auth']);
    
    $token = $this->getServiceLocator()->get('OrgHeiglHybridAuthToken');
    if (! $token->isAuthenticated()) {
        echo 'No user logged in';
    }
    /** @var OrgHeiglHybridAuth\UserToken $user */
    echo $token->getDisplayName(); // The name of the logged in user
    echo $token->getUID();  // The internal UID of the used service
    echo $token->getMail(); // The mail-address the service provides
    echo $token->getLanguage(); // The language the service provides for the user
    echo $token->getService()  // Should print out the Name of the service provider.

安装

composer

最好使用 composer 安装此模块。为此,运行以下命令将库添加到您的应用程序

# Require the hybridauth-module
composer require org_heigl/hybridauth

如果您想使用多个认证提供程序,则应运行此命令

# Require the hybridauth-module
composer require org_heigl/hybridauth:dev-feature/multipleProviders

手动安装

您想走难路吗?当然您不想尝试 composer 吧?

那么去弄清楚吧。您可能想在大itter频道或 IRC(freenode)上提问,但请期待类似“使用 composer!”的回答

请注意,您可以选择下载库的 zip 文件,或者使用 git submodule 命令将库克隆到适当的文件夹中。您不应简单地使用 git clone <library> <target>,因为这可能会干扰您本地的 git-repo(如果您在使用的话)。子模块方法使库更新更容易,但可能会因为子模块命令的局限性而带来很多麻烦!在这种情况下,我无法提供支持!或者,您可以在 github 上 fork 项目的代码。

示例实现。

https://hybridauth.heigl.org 上有一个示例实现 - 源代码在 github 上。