jedelhu/socialpack

这将允许在Facebook和Twitter上登录和上传数据

安装: 5

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:项目

dev-master 2016-09-28 13:45 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:12:12 UTC


README

Facebook和Twitter库

安装

首先通过Composer安装此包。

在composer.json文件下的"require"部分添加此行

"jedelhu/Socialpack": "dev-master",

在app.php下的'providers'部分添加此行

Jedelhu\Socialpack\SocialpackServiceProvider::class

在命令行中运行此命令

php artisan vendor:publish --provider="Jedelhu\Socialpack\SocialpackServiceProvider"

配置

在config\socialpack.php中提供有效的app_id和app_secret密钥

Twitter的回调函数

http://yourdomain.com/callbackTwitter

Facebook的回调函数

http://yourdomain.com/loginFacebook

更改以下代码(在laravel中转换为facebook sdk v4包)

转到vendor\facebook\php-sdk-v4\src\Facebook\Helpers\FacebookRedirectLoginHelper.php的第123行,

我将此脚本改为

private function makeUrl($redirectUrl, array $scope, array $params = [], $separator = '&')
{
    $state = $this->pseudoRandomStringGenerator->getPseudoRandomString(static::CSRF_LENGTH);
    $this->persistentDataHandler->set('state', $state);

    return $this->oAuth2Client->getAuthorizationUrl($redirectUrl, $state, $scope, $params, $separator);
}

(我添加了Session::put('state', $state);)

private function makeUrl($redirectUrl, array $scope, array $params = [], $separator = '&')
{
    $state = $this->pseudoRandomStringGenerator->getPseudoRandomString(static::CSRF_LENGTH);
    $this->persistentDataHandler->set('state', $state);
    Session::put('state', $state);
    return $this->oAuth2Client->getAuthorizationUrl($redirectUrl, $state, $scope, $params, $separator);
}

在第234行,我将此脚本改为

protected function validateCsrf()
{
    $state = $this->getState();
    $savedState = $this->persistentDataHandler->get('state');

    if (!$state || !$savedState) {
        throw new FacebookSDKException('Cross-site request forgery validation failed. Required param "state" missing.');
    }

    $savedLen = strlen($savedState);
    $givenLen = strlen($state);

    if ($savedLen !== $givenLen) {
        throw new FacebookSDKException('Cross-site request forgery validation failed. The "state" param from the URL and session do not match.');
    }

    $result = 0;
    for ($i = 0; $i < $savedLen; $i++) {
        $result |= ord($state[$i]) ^ ord($savedState[$i]);
    }

    if ($result !== 0) {
        throw new FacebookSDKException('Cross-site request forgery validation failed. The "state" param from the URL and session do not match.');
    }
}

(我添加了$this->persistentDataHandler->set('state', Session::get('state'));)

protected function validateCsrf()
{
    $state = $this->getState();
    $this->persistentDataHandler->set('state', Session::get('state'));
    $savedState = $this->persistentDataHandler->get('state');

    if (!$state || !$savedState) {
        throw new FacebookSDKException('Cross-site request forgery validation failed. Required param "state" missing.');
    }

    $savedLen = strlen($savedState);
    $givenLen = strlen($state);

    if ($savedLen !== $givenLen) {
        throw new FacebookSDKException('Cross-site request forgery validation failed. The "state" param from the URL and session do not match.');
    }

    $result = 0;
    for ($i = 0; $i < $savedLen; $i++) {
        $result |= ord($state[$i]) ^ ord($savedState[$i]);
    }

    if ($result !== 0) {
        throw new FacebookSDKException('Cross-site request forgery validation failed. The "state" param from the URL and session do not match.');
    }
}

如何使用Twitter Api

在控制器顶部添加此调用

use Jedelhu\Socialpack\SocialpackController;

调用函数

$result=$social->loginTwitter($data);

获取简介信息(包括简介信息和图片)

        $data=array(
            'profile' => "yes",
            );

获取推文

        $data=array(
            'recent_tweets' => array(
                "show" => "yes"
            )
            );

发布推文

              $data=array(
                   'post_tweet' => array(
                       'show' => "no",
                       'message' => "Test Tweet"
                   )
                   );

如何使用Facebook Api

在控制器顶部添加此代码

use Jedelhu\Socialpack\SocialpackController;

调用函数(在loginFacebook()函数中获取会话)

 Session::put('data', $data);

$result=$social->loginFacebook();

获取简介信息

        $data=array(
            'profile' => "yes",
            );

获取好友

        $data=array(
            'friends' => "yes",
                  );

获取个人头像

             $data=array(
                'profile_image' => "yes",
            );

获取发布的内容

             $data=array(
                'published_post' => "yes",
            );

获取点赞的页面

             $data=array(
                'like_pages' => "yes",
            );

获取所有照片

             $data=array(
                'all_photos' => "yes",
            );

在时间轴上发布

             $data=array(
                'post_timeline' => "yes",
                array(
                "show" => "yes",
                "message" => "My post "
                ),
            );

在时间轴上发布图片

             $data=array(
                'post_timeline' => "yes",
                array(
                "show" => "yes",
                "message" => "My post ",
                "url" => ""
                ),
            );

在时间轴上添加文章

             $data=array(
                  'post_link_timeline' => "yes",
                            array(
                                "show" => "yes",
                                "link" => "http://www.espn.in/football/european-championship/74/blog/post/2889086/euro-2016s-six-best-group-games-belgium-vs-italy-england-vs-wales-and-more"
                            ),
            );