我想知道在尝试将对谷歌登录的支持添加到我的网站时,是否有一个简单的错误修复方法,因为我只能在基于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"是函数
- "没有起点"是原因
您的客户端能够访问必要的证书/密钥吗?