sensiolabs / connect
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-fix-deprecation
- dev-exception-type
- dev-cleanup
This package is auto-updated.
Last update: 2024-06-06 14:49:55 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 许可证授权。