ng2-ui-auth是这样配置的
Ng2UiAuthModule.forRoot({
baseUrl:'http://localhost:8000',
loginUrl: '/api/auth/login',
providers: {
google: {
clientId: '....',
url: '/api/auth/google'
}
}
})
将会话数据发送到服务器时,这是POST有效负载
{
"authorizationData": {
//the same data sent to the auth endpoint
},
"oauthData": {
//the data received from the oauth endpoint
},
"userData": {
//additional data you've provided
}
}
然而,在Lumen框架中,Socialite期望对象根目录中的字段code
和redirect_uri
,否则会引发以下错误
{“message”:“客户端错误:
POST https:\/\/accounts.google.com\/o\/oauth2\/token
导致400 Bad Request
响应:\ n {\ n \”错误\“:\”invalid_request \“,\ n \”error_description \ “:\”缺少必需参数:代码\“\ n} \ n”,“代码”:400,“status_code”:500}
我在文档中找不到任何内容。
我错过了一些配置吗?有人解决了这个问题吗?
提前致谢
答案 0 :(得分:0)
这个问题已经很久了,但是这个解决方案可能会帮助遇到这个问题的其他人。
这是我们在Lumen API方面所做的事情:
// Due to the changes in ng2-ui-auth (Angular) we set the fiels to the right place
if (!$request->has('code'))
$request->request->add(['code' => $request->input('oauthData.code')]);
if (!$request->has('redirect_uri'))
$request->request->add(['redirect_uri' => $request->input('authorizationData.redirect_uri')]);
// Retrieve the redirectUri
$redirectUri = $request->has('redirectUri') ? $request->get('redirectUri') : $request->get('redirect_uri');
// Inits using the google (stateless) driver
$provider = Socialite::with('google');
$provider->redirectUrl($redirectUri);
$provider->stateless();
实际上发生的是,使用新的ng2-ui-auth(v8 +)时,代码和redirect_uri更改了位置。因此,在这里,我们只是将它们放在正确的位置(以防万一它不再更改),并且还要确保它可以与旧版本一起使用。当然,不要忘记保持stateless(),因为流明不能处理会话。