codezero/oauth

无需烦恼的社交认证。

0.0.1 2015-05-05 10:56 UTC

This package is auto-updated.

Last update: 2024-09-11 14:18:55 UTC


README

GitHub release License Total Downloads

无需烦恼的社交认证!

此包是围绕 logical-and/php-oauth 的包装,旨在使通过第三方提供程序进行用户认证更加容易。支持纯PHP和 Laravel 5

安装

通过Composer安装此包

composer require codezero/oauth

注册应用

您需要为希望支持的每个提供程序创建一个应用。它们将为您提供应用ID(或密钥)和应用密钥。

纯PHP实现

创建配置文件

创建一个 providers.php 配置文件,并将您的密钥存储在其中

<?php

return [
    'facebook' => [
        'key'    => '123',
        'secret' => '456',
    ],
    'google' => [
        'key'    => '123',
        'secret' => '456',
    ],
    // ...
];

创建脚本

创建一个 .php 文件并自动加载供应商类

require_once 'vendor/autoload.php'; // Path may vary

然后,导入并实例化类

use CodeZero\OAuth\Authenticator;
use CodeZero\OAuth\ProviderFactory;

$credentials = include __DIR__.'/path/to/providers.php';
$providerFactory = new ProviderFactory($credentials);
$auth = new Authenticator($providerFactory);

现在您有 $auth 可以使用。转到 #usage 以了解它有多简单... ;)

Laravel 5实现

将ServiceProvider添加到 config/app.php 中的提供者数组中

'providers' => [
    'CodeZero\OAuth\Laravel5\OAuthServiceProvider'
]

config 文件夹中创建 oauth-providers.php 并添加您的配置数组,或者简单地发布并编辑它

php artisan config:publish codezero/oauth

然后您可以在您的应用的任何位置“制作”(或注入)一个 Authenticator 实例

$auth = \App::make('CodeZero\OAuth\Contracts\Authenticator');

现在您有 $auth 可以使用。转到 #usage 以了解它有多简单... ;)

用法

重定向...享受旅途!

使用 Authenticator 实例($auth),您可以调用... Facebook(或Google,或...)

$details = $auth->request('facebook'); //=> Lower case!

当您运行 $auth->request('provider') 时,您将被重定向到提供程序。您需要授予或拒绝访问您个人信息的权限,然后您将被重定向回您来自的页面。

重要:您需要在您的应用中将页面设置为有效的回调URL!

请注意,当您被重定向回时,此脚本将始终在URL中附加 ?run=1。根据提供程序的不同,它们对这一点很敏感。至少对于Google来说,这非常重要,所以如果需要,请确保在您的应用设置中将它包含在回调URL中!

检查响应...

现在您可以处理提供程序返回的 $details

if ($details) {
    $email = $details->getEmail();
    $firstName = $details->getFirstName();
    $lastName = $details->getLastName();
    // ...
} else {
    // User canceled!
}

如果用户拒绝,则 $details 将为 false,您可以执行所需的任何操作。

如果授予访问权限,则 $details 将是来自 logical-and/php-oauth 包的 ExtractorInterface 实例,它具有几个方便的方法来获取特定的用户数据。请参阅 https://github.com/logical-and/php-oauth#userdata 了解有关此内容的更多信息或查看 interface

重定向用户...

在成功请求后重定向回您的网站后,您会注意到URL中有一个令牌。此令牌不能重复使用,因此如果刷新页面,将抛出异常...

因此,在完成后将用户重定向到其他地方可能很明智。

可用提供程序

logical-and/php-oauth 支持大量不同的服务。

只要您在配置中添加必要的密钥,并且存在一个 Provider 类,这些服务都可以与该包一起工作。

创建一个 Provider

如果您尚未包含一个 支持的 提供者,您可以自己创建一个

use CodeZero\OAuth\BaseProvider;

class ExampleProvider extends BaseProvider
{
    /**
     * Internal Provider Handle
     *
     * @var string
     */
    protected $handle = 'example';

    /**
     * Default Scope
     *
     * @var array
     */
    protected $defaultScope = [ 'example.scope' ];

    /**
     * Default Request Uri
     *
     * @var string
     */
    protected $defaultRequest = 'example/uri';
}

句柄需要匹配在 php-oauth 的示例 中使用的那些。基本作用域和请求 URI 也可以在那里找到。

只需将您的类保存在某个地方,确保它被(自动)加载,然后在配置数组中按如下方式引用它

'example' => [
    'key'    => '123',
    'secret' => '456',
    'scope'          => [], // Optional: overrule default
    'request_uri'    => '', // Optional: overrule default
    'callback_url'   => '', // Optional: overrule default
    'provider_class' => 'ExampleProvider', //=> Your custom provider
],

示例

查看 示例

待办事项

  • 添加测试...
  • 添加更多提供者...
  • 为 Laravel 的 Session 创建存储驱动...
  • 修复错误(也许...可能...) :)

测试

$ vendor/bin/phpspec run

安全

如果您发现任何与安全相关的问题,请通过 电子邮件 告诉我,而不是使用问题跟踪器。

许可

MIT 许可证(MIT)。请参阅 许可文件 了解更多信息。

Analytics