【问题标题】:Laravel Socialite - get user details by tokenLaravel Socialite - 通过令牌获取用户详细信息
【发布时间】:2016-03-08 02:54:52
【问题描述】:

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

Facebook SDK 为 PHP 提供了方法:

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

Laravel Socialite 可以根据那个token 获取用户的facebook 详细信息吗?还是只使用那个 Facebook SDK

【问题讨论】:

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


    【解决方案1】:

    我向 repo 提交了一个拉取请求,该请求被 2.o 分支接受。你现在应该可以拨打Socialte::driver('facebook')->userFromToken($token)了。

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

    干杯。

    【讨论】:

    • 正是我所追求的——可惜今年还没有发布包含它!
    • 仅供参考,请确保您使用的至少是 2016 年 3 月 21 日发布的 Socialite 2.0.15。
    • 我刚刚更新到 v2.0.15 并且该方法似乎仍然受到保护。
    • 如果你得到错误,比如非静态方法 Laravel\Socialite\Contracts\Factory::driver() 不能被静态调用,假设 $this 来自不兼容的上下文。更改这一行:使用 Laravel\Socialite\Contracts\Factory 作为 Socialite;到:使用社交名流;来源:jakzaprogramowac.pl/pytanie/…
    【解决方案2】:

    您还可以扩展您的社交名媛 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 类中添加新方法。

    【讨论】:

      【解决方案3】:

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

      所以你最好使用 Facebook SDK。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-30
        • 2016-08-07
        • 2021-08-14
        • 2014-11-08
        • 2018-08-12
        • 2020-04-05
        • 2016-05-05
        • 2016-06-02
        相关资源
        最近更新 更多