codesleeve/social

此包已被废弃,不再维护。未建议替代包。

将oauth和社交网站如facebook、twitter和google集成到您的Laravel 4应用程序的简单方法。

dev-master 2014-07-01 17:01 UTC

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' => '/',
  ),

您需要添加至少一个keysecret,这些可以通过创建一个新的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>

支持

  • Facebook
  • Twitter
  • Google
  • GitHub

如果您发现问题,请提交问题。祝您享受!