如何让Google Auth与Laravel合作



我想知道在尝试将对谷歌登录的支持添加到我的网站时,是否有一个简单的错误修复方法,因为我只能在基于Laravel的环境中复制它。Vanilla PHP应用程序运行得很好。

这是我的相关代码:

if ($request->has('googleToken')) {
$client = new Google_Client(['client_id' => env('GOOGLE_PLATFORM_CLIENT_ID') ]);
$payload = $client->verifyIdToken($credentials['googleToken']);
if (!$payload) {
return response([ 'error' => 'Invalid token, please try using form-based authentication.' ], Response::HTTP_FAILED_DEPENDENCY);
}
$user['googleToken'] = $credentials['googleToken'];
}

我知道我做的验证太放松了,但请注意,我只是在测试,我计划在不久的将来更改此代码。

上面的代码通过Axios PUT请求从前端接收数据,有效载荷如下:

{
googleToken: "eyJhbGciOiJSUzI1NiIsImtpZCI6IjE5ZmUyYTdiNjc5NTIzOTYwNmNhMGE3NTA3OTRhN2JkOWZkOTU5NjEiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiNTkyODkzNjE3ODYzLXRscDdvaDByaTk2dTZxZGxrOXYwbHAyanQyNDlkdDNsLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiNTkyODkzNjE3ODYzLXRscDdvaDByaTk2dTZxZGxrOXYwbHAyanQyNDlkdDNsLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE1NTg0MDg0NTE2OTMxOTQzODU..."
mailAddress: "user@mail.com"
}

问题是有效载荷将简单地返回false。我决定尝试研究这个问题,所以我转到Google_Client中包含的verifyIdToken的定义,然后从那里跳到最终返回其父函数的函数,即Verify类中的verifyIdToken

在该类中,有一个非常松散的try/catch块,我决定在其中尝试添加一个通用异常情况,以便快速打印错误消息进行调试。我做到了,这就是我得到的输出:

OpenSSL unable to verify data: error:0909006C:PEM routines:get_name:no start line

这就是内部失败的地方,从现在开始,我真的不知道如何继续,因为这个错误感觉很神秘,或者至少不在我的知识范围内。

您引用的OpenSSL错误表明您的客户端无法读取任何/更多PEM编码的数据。提到https://www.openssl.org/docs/man1.1.1/man3/PEM_read.html.

OpenSSL unable to verify data: error:0909006C:PEM routines:get_name:no start line

这里,

  • "EM例程"表示OpenSSL中的库
  • "get_name"是函数
  • "没有起点"是原因

您的客户端能够访问必要的证书/密钥吗?

最新更新