Laravel Socialite - 通过令牌获取用户详细信息

时间:2015-05-30 08:27:14

标签: facebook-graph-api laravel laravel-5

我正在使用facebook登录和laravel REST API服务器开发Android应用程序。用户在移动设备上登录后,应用令牌会被发送到我的服务器。在服务器上,我想通过令牌获取facebook用户详细信息。

适用于PHP的

Facebook SDK 提供了以下方法:

$session = new FacebookSession('token');
$me = (new FacebookRequest($session, 'GET', '/me',))->execute()->getGraphObject(GraphUser::className());

Laravel Socialite可以根据令牌获取用户的Facebook详细信息吗?或者只使用 Facebook SDK

3 个答案:

答案 0 :(得分:10)

我向2.o分支接受的回购提交了拉取请求。您现在应该可以致电Socialte::driver('facebook')->userFromToken($token)

https://github.com/laravel/socialite/pull/126

干杯。

答案 1 :(得分:3)

您还可以扩展您的Socialite Facebook提供商。

例如;
在App / Library文件夹中创建一个SocialConnect类

namespace App\Library;

use Laravel\Socialite\Two\FacebookProvider;

    class SocialConnect extends FacebookProvider {

        public function userFromToken($access_token)
        {
            $user = $this->mapUserToObject($this->getUserByToken($access_token));
            return $user->setToken($access_token);
        }
    }

然后在App / Providers / AppServiceProvider.php上的boot方法中添加这些行

 $socialite = $this->app->make('Laravel\Socialite\Contracts\Factory');
    $socialite->extend(
        'SocialConnect',
        function ($app) use ($socialite) {
            $config = $app['config']['services.facebook'];
            return $socialite->buildProvider(SocialConnect::class, $config);
        }
    );

准备好使用了!

Socialite::driver('SocialConnect')->userFromToken($accessToken)

您还可以在SocialConnect课程中添加新方法。

答案 2 :(得分:0)

在Facebook服务提供商中实施了一种方法getUserByToken,但它是protected,仅在内部用于获取user详细信息。

所以你最好使用Facebook SDK。