Laravel Socialite:Oauth 2拒绝工作流程

时间:2016-12-18 19:17:06

标签: laravel laravel-5 oauth oauth2 laravel-socialite

我正在尝试"拒绝"用户取消来自Social(本例中为LinkedIn)页面的OAuth授权请求时的工作流程

  

RequestException.php第111行中的ClientException:客户端错误:POST https://www.linkedin.com/oauth/v2/accessToken导致400 Bad Request响应:{"错误":" missing_parameter",&# 34; ERROR_DESCRIPTION":" A   必需参数\"代码\"缺少"}

控制器具有标准代码:

public function redirect()
{
    return Socialite::driver('linkedin')->redirect();
}

public function callback()
{
    $providerUser = Socialite::driver('linkedin')->user();
    ...
}

如果用户在社交网站上单击“允许/接受”,则可以正常工作。当用户取消时,它会抛出异常。

我无法弄清楚如何处理用户"拒绝"场景。

2 个答案:

答案 0 :(得分:1)

callback函数中为异常添加try catch块并执行您喜欢的操作。

try {

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

} catch (\Exception $e) {
    return redirect('redirect'); // This will ask for access from user again. I don't prefer
    // Do whatever you like
}

答案 1 :(得分:0)

经过长时间的搜索,解决方案是从范围中删除“ r_liteprofile”并将“ r_basicprofile”放入vendor \ laravel \ socialite \ src \ Two \ LinkedInProvider.php

应为: protected $scopes = ['r_basicprofile', 'r_emailaddress'];