我正在使用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 ?
答案 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。