symfonycorp / connect
SymfonyConnect SDK
Requires
- php: >=8.0.2
- ext-dom: *
- ext-json: *
- symfony/http-client: ^5.4|^6.0|^7.0
Requires (Dev)
- symfony/form: ^5.4|^6.0
- symfony/phpunit-bridge: ^5.4|^6.0|^7.0
- symfony/security-bundle: ^5.4|^6.0|^7.0
- dev-master / 8.x-dev
- v8.1.3
- v8.1.2
- v8.1.1
- v8.1.0
- v8.0.7
- v8.0.6
- v8.0.5
- v8.0.4
- v8.0.3
- v8.0.2
- v8.0.1
- v8.0.0
- v7.4.0
- v7.3.1
- v7.3.0
- v7.2.4
- v7.2.3
- v7.2.2
- v7.2.1
- v7.2.0
- v7.1.5
- v7.1.4
- v7.1.3
- v7.1.2
- v7.1.1
- v7.1.0
- v7.0.0
- v6.3.0
- v6.2.2
- v6.2.1
- v6.2.0
- v6.1.0
- v6.0.1
- v6.0.0
- 5.1.x-dev
- v5.1.6
- v5.1.5
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1.0
- 5.0.x-dev
- v5.0.2
- v5.0.1
- v5.0.0
- 4.3.x-dev
- v4.3.4
- v4.3.3
- v4.3.2
- v4.3.1
- v4.3.0
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.0
- v4.0.0
- v3.0.0
- v2.1.0
- v2.0.2
- v2.0.1
- v2.0.0
- v1.9
- v1.8
- v1.7
- v1.6
- v1.5
- v1.4
- v1.3
- v1.2
- v1.1
- v1.0
- dev-exception-type
- dev-cleanup
This package is auto-updated.
Last update: 2024-09-06 15:17:19 UTC
README
关于
这是SymfonyConnect API的官方SDK。它可以用于公共API或与已注册的OAuth应用程序一起使用。要注册应用程序,请访问您的SymfonyConnect账户。
安装
要安装SDK,运行以下命令,您将获得最新版本
composer require symfonycorp/connect
用法
OAuth
要在Symfony应用程序中使用SDK,我们建议使用内置的包。
否则,您可以从以下部分获得灵感,它将向您展示如何在Silex应用程序中包含OAuth身份验证。
注意:我们假设您已在SymfonyConnect上注册了您的应用程序,并且您拥有您的application_id
、application_secret
和scope
。
-
使用注册应用程序时提供的我们给出的数据配置您的silex应用程序。
// index.php use SymfonyCorp\Connect\Api\Api; use SymfonyCorp\Connect\OAuthConsumer; $app = new Silex\Application(); $app['connect_id'] = 'application_id'; $app->register(new Silex\Provider\UrlGeneratorServiceProvider()); $app->register(new Silex\Provider\SessionServiceProvider()); $app['connect_secret'] = 'application_secret'; // List of scope copy-pasted from your application page on SymfonyConnect $app['connect_scope'] = array( 'SCOPE_ADDITIONAL_EMAILS', 'SCOPE_BIRTHDAY', 'SCOPE_EMAIL', 'SCOPE_LOCATION', 'SCOPE_PUBLIC', 'SCOPE_SSH_KEYS', ); $app['connect_consumer'] = new OAuthConsumer( $app['connect_id'], $app['connect_secret'], implode(' ', $app['connect_scope']) // scope MUST be space separated ); $app['connect_api'] = new Api();
完成。现在我们可以继续进行第二步。
-
我们需要创建两个控制器来处理OAuth2三腿工作流程。
第一个控制器的目标是让用户重定向到SymfonyConnect,以便请求您的应用程序使用其数据的授权。此控制器将绑定到
connect_auth
路由。在您的模板中,您需要创建一个指向此路由的链接。// index.php $app->get('/connect/new', function () use ($app) { $callback = $app['url_generator']->generate('connect_callback', array(), true); $url = $app['connect_consumer']->getAuthorizationUri($callback); return $app->redirect($url); })->bind('connect_auth');
第二个控制器是在SymfonyConnect将用户重定向到您的应用程序后欢迎用户的控制器。在注册客户端时,您必须提供指向此控制器的精确绝对URL。
$app->get('/connect/callback', function (Request $request) use ($app) { // There was an error during the workflow. if ($request->get('error')) { throw new \RuntimeException($request->get('error_description')); } // Everything went fine, you can now request an access token. try { $data = $app['connect_consumer']->requestAccessToken($app['url_generator']->generate('connect_callback', array(), true), $request->get('code')); } catch (OAuthException $e) { throw $e; } // At this point, we have an access token and we can use the SDK to request the API $app['connect_api']->setAccessToken($data['access_token']); // All further request will be done with this access token $root = $app['connect_api']->getRoot(); $user = $root->getCurrentUser(); $user->getBadges()->refresh(); $app['session']->start(); $app['session']->set('connect_access_token', $data['access_token']); $app['session']->set('connect_user', $user); return $app->redirect('/'); })->bind('connect_callback');
-
从模板创建链接
在模板中,您可以使用以下代码片段来渲染一个SymfonyConnect按钮
<a href="#" class="connect-with-symfony"> <span>Log in with SymfonyConnect</span> </a>
并包含以下CSS文件:
https://connect.symfony.com/css/sln.css
就这样!您的应用程序现在可以使用SymfonyConnect作为身份验证方法了!
API
SymfonyConnect Connect API是RESTful的,并且(尝试)符合HATEOAS原则。
以下是一些有用的食谱。
-
搜索
$root = $api->getRoot(); // Will search for users $users = $root->getUsers('fab');
-
编辑认证用户
$app['connect_api']->setAccessToken($app['session']->get('connect_access_token')); $root = $app['connect_api']->getRoot(); $user = $root->getCurrentUser(); $user->setBiography("I'm sexy and I know it."); $user->submitForm();
如您从这些示例中看到,您必须始终通过API根来执行操作。这是因为API是可发现的,并且SDK不应了解除了API的入口点之外的内容。
许可证
此库受MIT许可证的许可。