ikkez/f3-opauth

PHP Fat-Free 框架的 Opauth 插件

v1.0.1 2019-05-02 07:00 UTC

This package is auto-updated.

Last update: 2024-09-06 05:55:22 UTC


README

这是一个用于 PHP Fat-Free 框架轻松集成 Opauth 的插件。[Opauth](http://opauth.org/)。

安装

  • A: 使用 composer composer require ikkez/f3-opauth
  • 或 B: 将 opauth 文件夹放入您的库或自动加载目录中,并调整自动加载路径
// adjust the autoloader
$f3->set('AUTOLOAD','lib/opauth/');

配置

  1. 您需要为您的服务配置您想要使用的每个策略。您可以在每个策略文件夹的readme文件中找到如何操作的说明。基本上,您只需要在每个策略的提供者上创建一些OAuth消费者应用程序,并将密钥/密钥凭证添加到配置文件中。Google、Facebook、Twitter 和 Github 已经包含在这里,因此您可以直接跳过这些策略readme文件中的“安装”部分。如果您需要更多OAuth提供者,请查看策略列表
  2. 此插件包含自己的配置文件。它用于向Opauth提供所有策略配置,以及一些F3路由设置。您至少需要更改security_salt和您喜欢的策略密钥和密钥。
  3. 将授权集成到您现有的登录过程中。

基本用法

// in your index.php
$f3 = \Base::instance();
// load opauth config (allow token resolve)
$f3->config('lib/opauth/opauth.ini', TRUE);

// init with config
$opauth = OpauthBridge::instance($f3->opauth);

// define login handler
$opauth->onSuccess(function($data){
	header('Content-Type: text');
	echo 'User successfully authenticated.'."\n";
	print_r($data['info']);
});

// define error handler
$opauth->onAbort(function($data){
	header('Content-Type: text');
	echo 'Auth request was canceled.'."\n";
	print_r($data);
});

$f3->run();

事件处理器也可以是可调用的字符串

$opauth->onSuccess('\Controller\User->socialLogin');

要登录,调用一个策略,例如http://domain.com/auth/facebook

应用程序流程

  1. 好的,您将一个社交登录按钮放置在您的常规登录表单附近,将用户发送到登录策略,例如 http://domain.com/auth/facebook
  2. 当用户在一个提供者处进行身份验证后,用户会被发送回一个回调路由。回调检查请求和身份验证是否有效。然后,当授权成功时,调用onSuccess处理器,并提供一些从给定策略中提供的数据。
  3. 您可以使用这些数据来提取用户名、访问令牌、电子邮件或最适合该策略的其他任何内容。每个策略都提供不同的数据,因此根据您的应用程序需求,您可能需要考虑在您的应用程序中添加一些回退机制(例如,您可能无法从 Twitter 或 Facebook 获取电子邮件)。您可以使用这些数据在您的用户数据库中查找匹配项。根据结果,您可以开始登录或注册控制器。
  4. 在注册过程中,您可能希望将策略身份验证数据中的唯一内容保存到用户表中(例如电子邮件或 $f3->hash 多个字段,如用户名、令牌、ID)- 这样您可以知道谁已经激活了社交身份验证提供者,并有机会根据此信息加载用户。
  5. 在注册和在登录后,您可能在控制器中保存一个活动的用户会话来记住您的已登录用户。
  6. 当会话过期或用户需要从其他设备重新登录时,请将他发送到身份验证策略路由(例如 auth/facebook - 大多数提供者在身份验证成功后立即重定向),现在您可以在用户表中找到他,具有已激活的社交身份验证并直接登录他。

这当然只是实现的一个想法。一些提供者还返回用于与其第三方API进行进一步通信的令牌(例如,用于获取更多配置文件数据或更新令牌),但这不是此插件将要处理的内容。有关更多信息,请参阅策略文档。

演示

许可协议

GPLv3