codesleeve / social
将oauth和社交网站如facebook、twitter和google集成到您的Laravel 4应用程序的简单方法。
Requires
- php: >=5.3.0
- illuminate/support: ~4
- lusitanian/oauth: *
This package is not auto-updated.
Last update: 2022-02-01 12:25:42 UTC
README
我们已经停止了这项工作。
遗憾的是,底层包 lusitanian/oauth
存在一些问题。我们已经升级到最新版本,但仍可能有问题。:( 我们没有时间真正投入工作来使这个包达到 生产级,所以请自行承担风险。
如果您想贡献,请提交一个拉取请求。
如果您想添加新的提供者,可以在拉取请求中这样做。只需浏览一下代码。
目标
此包的目标是快速将oauth和社交媒体网站如facebook、twitter和google集成到您的laravel 4应用程序中。
我们通过预先配置的oauth插件集来做到这一点,这些插件依赖于非常流行的lusitanian/phpoauthlib。该项目使用oauth和最流行社交网站(facebook、twitter、google等)的facade以及api,在安装此包后的几分钟内即可集成oauth。
安装
首先通过Composer安装此包。编辑您项目的composer.json
文件,以要求codesleeve/social
。
可能看起来像这样
"require": { "laravel/framework": "4.0.*", "codesleeve/social": "dev-master" }
接下来,在终端中更新Composer
composer update
一旦此操作完成,请添加服务提供者。打开app/config/app.php
,并将新的项目添加到提供者数组中。
'Codesleeve\Social\SocialServiceProvider'
并在app/config/app.php
中的aliases
数组下添加Social
facade。
'Social' => 'Codesleeve\Social\Social',
最后,生成一个您可以工作的包配置。
php artisan config:publish codesleeve/social
用法
首先您需要配置插件。让我们以facebook为例说明如何操作。下面是其他社交网站的一个完整列表。
接下来,编辑位于app/config/packages/codesleeve/social/config.php
的文件,以下是一个facebook的示例:
'facebook' => array( 'key' => '', 'secret' => '', 'scopes' => array('email'), 'redirect_url' => '/', ),
您需要添加至少一个key
和secret
,这些可以通过创建一个新的facebook应用来获得。
用户登录后,如果您想将他们重定向到laravel应用程序的基本路径之外的地方,则可以更改redirect_url
。
配置完facebook应用程序后,打开一个视图并在其中放置
<a href="<?= Social::login('facebook') ?>">Login to facebook</a>
现在您已经与facebook连接,现在您可以访问有关该用户的Facebook数据(前提是您在包配置中的scopes数组中请求了权限)
您可以将API请求作为参数传递给Social::facebook
facade,如下所示
$user = Social::facebook('/me');
您可以通过这种方式检查用户是否已登录到服务
if (Social::check('facebook')) { ... }
我们还添加了一个通用接口,通过传递请求中的'用户'来获取已登录用户。
$user = Social::facebook('user'); $user = Social::twitter('user'); $user = Social::google('user');
这使我们无需直接处理API,只需获取用户信息而无需其他信息。
从API解码JSON
如果您决定想以不同的方式从提供者解码数据,您可以设置解码器函数。下面的示例显示了如何解码为关联数组。
Social::setDecoder(function($data) { return json_decode($data, true); });
注意,但是 这将更改使用Social的所有API的解码器,如果您需要重置解码器,可以这样做:
Social::setDecoder(null);
完整示例页面
<!doctype html> <html lang="en" class="login page"> <head> <meta charset="8-UTF"> <title>Login</title> </head> <body> <div class="container"> <div class="login-social"> <a href="<?= Social::login('facebook') ?>"><img src="http://ottopilotmedia.com/wp-content/uploads/2012/07/facebook-icon.jpg"></a> </div> </div> <pre> <?php if (Social::check('facebook')): ?> <?= print_r( Social::facebook('/120500222/feed') )?> <?php endif; ?> </pre> </body> </html>
支持
- GitHub
如果您发现问题,请提交问题。祝您享受!