小编kro*_*ine的帖子

Laravel 5 Socialite Facebook登录用户取消应用程序请求后回调错误处理

我有一个带有Socialite的Laravel 5网络应用程序,可以通过Facebook帐户登录我的用户.

这是我的回调函数:

public function callback(SocialAccountService $service)
{

    $user = $service->createOrGetUser(Socialite::driver('facebook')->user());

    auth()->login($user);

    return redirect()->to('/home');
}
Run Code Online (Sandbox Code Playgroud)

这是我的SocialAccountService,基本上该函数返回用户,如果存在或创建一个新用户:

class SocialAccountService
{
    public function createOrGetUser(ProviderUser $providerUser)
    {
        $account = SocialAccount::whereProvider('facebook')
            ->whereProviderUserId($providerUser->getId())
            ->first();

        if ($account) {
            return $account->user;
        } else {

            $account = new SocialAccount([
                'provider_user_id' => $providerUser->getId(),
                'provider' => 'facebook'
            ]);

            $user = User::whereEmail($providerUser->getEmail())->first();

            if (!$user) {

                $user = User::create([
                    'email' => $providerUser->getEmail(),
                    'name' => $providerUser->getName(),
                ]);
            }

            $account->user()->associate($user);
            $account->save();

            return $user;

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我能够通过Facebook成功登录我的用户,但当用户点击FB对话框上的取消获取权限时,它会中断.

Facebook应用权限拒绝时的回拨错误

我该如何处理这个错误?我可以在URL框中看到错误消息,但不知道处理它们.

PS我对Laravel和Socialite来说相当新

php facebook laravel laravel-socialite laravel-5.2

7
推荐指数
1
解决办法
3887
查看次数

按顺序执行2个JavaScript函数

我有一个有两行的函数,我希望它们按顺序执行.功能是:

showNotification(message){
    $("#notificationMessageBody").html(message); // line1
    $("#notificationModal").modal('show');       //line2
}
Run Code Online (Sandbox Code Playgroud)

所以,每当我打电话给我showNotification("Hello World!")如何确保line1之前执行line2(意味着内容加载在模态触发之前完成)基本上,我试图在模态体中填写我的消息然后显示它,而不是在填充之前.

- 编辑 -

这些函数确实是一个接一个地执行,但我的模态在jQuery加载message到我的之前弹出#notificationMessageBody

结果,例如:如果我打电话给showNotification("Hello")我得到一个带有"你好"的模态(模态和东西的安排已完成),但之后如果我调用showNotification("World")模态首先出现"Hello",那么之后它会变为"世界".

注意:"你好"和"世界"是很大的文本垃圾,所以把它加载到我的DIV中必须花一些时间,我相信.即使它们被一个接一个地执行,但似乎(对于普通者)首先是模态弹出然后替换完成.我希望现在的情况有点清晰.

这个功能周围的任何地方都没有涉及AJAX.基本上,这是我可以说的自定义alert()函数.我的页面中有一个带有正确ID的模态.我改变了模态体内容(使用jQuery的.html()函数)并触发模式显示,如代码所示.

javascript jquery

5
推荐指数
1
解决办法
77
查看次数