繁体   English   中英

Laravel 5从Facebook获取用户信息

[英]Laravel 5 get user info from facebook

我正在尝试使用Laravel 5通过Facebook PHP-sdk从Facebook获得用户ID。我对出现的错误进行了大量搜索,但没有一个答案有帮助。

设置键:

use Facebook\FacebookSession;
FacebookSession::setDefaultApplication('XXX' , 'XXX');

重定向到Facebook:

public function getFacebook()
{
    $helper = new FacebookHandler(url('settings/set_facebook'));
    return Redirect::to($helper->getLoginUrl());
}

获取信息:

public function setFacebook()
{
    try{
        $session = new FacebookSession(\Session::get('state'));
        $request = new FacebookRequest($session, 'GET', '/me');
        $response = $request->execute();
        $graphObject = $response->getGraphObject()->asArray();
        dd($graphObject);
    } catch(Exception $e){
        dd(
            $e->getMessage(),
            $e->getCode(),
            $e
        );
    }
}

Laravel会话代码:

use Facebook\FacebookRedirectLoginHelper;
use Illuminate\Support\Facades\Session;

class FacebookHandler extends FacebookRedirectLoginHelper
{
    protected function storeState($state)
    {
        Session::put('state', $state);
    }

    protected function loadState()
    {
        return $this->state = Session::get('state');
    }
}

输出:

"Invalid OAuth access token."

190

FacebookAuthorizationException {#215 ▶}

我究竟做错了什么?

使用Laravel Socialite 它支持facebook,twitter,google +和github。 并且易于使用。

我通过删除setFacebook()并将getFacebook()更新为此来解决了这个问题:

$helper = new FacebookHandler(url('settings/get_facebook'));

try {
    $session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $e ) {
    dd($e);
} catch( Exception $e ) {
    dd($e);
}

if (isset($session))
{
    $user_profile = (new FacebookRequest(
        $session, 'GET', '/me'
    ))->execute()->getGraphObject(GraphUser::className());

    dd($user_profile);
} else {
    return Redirect::to($helper->getLoginUrl());
}

当然,您需要自定义错误处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM