首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用artdarek/oauth-4登录Facebook返回空白

使用artdarek/oauth-4登录Facebook返回空白
EN

Stack Overflow用户
提问于 2014-08-17 04:46:50
回答 1查看 1.2K关注 0票数 2

我正在尝试使用artdarek/oauth-4包设置facebook登录。重定向只返回一个包含以下url的空白页面:

代码语言:javascript
复制
 https://www.facebook.com/dialog/oauth?type=web_server&client_id=1423706434575595&redirect_uri=http%3A%2F%2Flocalhost%3A8888%2FcontractorSherpa%2Fpublic%2Ffacebook&response_type=code&scope=email+read_friendlists+user_online_presence

我使用的是Laravel 4.2.4

路由:

代码语言:javascript
复制
Route::get('/facebook', 'RegistrationController@loginWithFacebook');

RegistrationController:

代码语言:javascript
复制
Public function loginWithFacebook() {

    $code = Input::get('code');

    // get fb service
    $fb = OAuth::consumer('Facebook');

    //check for valid code
    // if empty provide user data
        if ( !empty($code)){
            $token = $fb->requestAccessToken($code);

            //send a request with it
            $result = json_decode( $fb->request('/me'), true);



        if (!empty($token)) {

            try{
                $user = Sentry::findUserByLogin($result['email']);

                Sentry::login($user, false);

                return Redirect::to('contractors/dashboard');
            }
            catch (Cartalyst\Sentry\Users\UsersNotFoundException $e)
            {
                $user = Sentry::register(array(
                            'activated' => 1,
                            'email' => $result['email'],
                            'password' => $result['password'],
                            'first_name' => $result['firstname'],
                            'last_name' => $result['lastname'],
                    ));
                $group = Sentry::findGroupByName($data['contractor']);
                $user->addGroup($usergroup);

                Sentry::login($user, false);

                return Redirect::to('contractors/dashboard');
            }
        }
    }
    else {
            //get fb authorization
        $url = $fb->getAuthorizationUri();

        // return to facebook login url
        return Redirect::to((string)$url);
    }
}

在我的例子中,$code是空的,所以它由else语句触发。

我尝试了dd($url),得到了以下响应:

代码语言:javascript
复制
object(OAuth\Common\Http\Uri\Uri)#368 (10) { ["scheme":"OAuth\Common\Http\Uri\Uri":private]=> string(5) "https" ["userInfo":"OAuth\Common\Http\Uri\Uri":private]=> string(0) "" ["rawUserInfo":"OAuth\Common\Http\Uri\Uri":private]=> string(0) "" ["host":"OAuth\Common\Http\Uri\Uri":private]=> string(16) "www.facebook.com" ["port":"OAuth\Common\Http\Uri\Uri":private]=> int(443) ["path":"OAuth\Common\Http\Uri\Uri":private]=> string(13) "/dialog/oauth" ["query":"OAuth\Common\Http\Uri\Uri":private]=> string(193) "type=web_server&client_id=1423706434575595&redirect_uri=http%3A%2F%2Flocalhost%3A8888%2FcontractorSherpa%2Fpublic%2Ffacebook&response_type=code&scope=email+read_friendlists+user_online_presence" ["fragment":"OAuth\Common\Http\Uri\Uri":private]=> string(0) "" ["explicitPortSpecified":"OAuth\Common\Http\Uri\Uri":private]=> bool(false) ["explicitTrailingHostSlash":"OAuth\Common\Http\Uri\Uri":private]=> bool(false) }

虽然我添加了几行代码来说明Sentry auth,但我的代码与artdarek包的自述文件中的示例几乎相同。

如何获得正确的url?

EN

回答 1

Stack Overflow用户

发布于 2014-08-17 06:54:32

上面的代码是正确的,除了我需要在

代码语言:javascript
复制
$fb = OAuth::consumer('Facebook');

所以这就变成了

代码语言:javascript
复制
$fb = OAuth::consumer( 'Facebook', 'http://www.contractorsherpa.com/facebook/' );

您要在该url中引用的页面是您在路由中发布的页面。别忘了后面的斜杠。$code将添加在斜杠后面,这将触发if语句:

代码语言:javascript
复制
if(!empty($code))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25343834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档