所以我正在创建一个wordpress网站并实现Google Sign-in API,
我设计它使每个用户都有相同的密码(一个长长的"乱码"字符串)。
下面的 PHP 代码
$usrname =$_REQUEST['/:)REQUEST EMAIL FROM GOOGLE API AFTER SIGN IN:(/'];
$creds = array();
$creds['user_login'] = $usrname;
$creds['user_password'] = 'AIzaSyA9s0cRKrGuhN7oLsjQUxlA1oZroWdWXbc';
$creds['remember'] = true;
但后来我意识到任何人都可以通过 JS 将他们的电子邮件传递给函数来模拟用户。
编辑:加上看到这个。
"警告:不要在后端服务器上接受纯用户ID,例如您可以使用GoogleUser.getId()方法获取的ID。修改后的客户端应用程序可以将任意用户 ID 发送到服务器以模拟用户,因此您必须改用可验证的 ID 令牌来安全地获取服务器端已登录用户的用户 ID。
所以我正在考虑使用从谷歌 api 获取的 CONSTANT 字符串,以便该字符串成为他们的密码。
我需要知道googleUser.getAuthResponse().id_token;是否是一个常量变量,所以我可以用它作为密码。
"常量"是指如果用户在 2010 年对我的应用程序进行身份验证并且 ID 令牌为"XPOXVSCWSW32526C",如果用户需要在 2017 年再次登录,则 ID 令牌仍将为"XPOXVSCWSW32526C"。
谢谢。!
我建议将ID令牌与Google开发人员博客上这篇文章中描述的后端架构一起使用:
-
通过 HTTPS 将 ID 令牌字符串(不是恒定的)发送到您的服务器
-
使用服务器上的库(例如,来自Google的PHP中的开源库)对其进行验证。请务必提供您的 Web OAuth 客户端 ID(应类似于 X.apps.googleusercontent.com)
$curl -sS getcomposer.org/installer | php
$php composer.phar require google/apiclient:dev-master
$php -a
php > require_once 'vendor/autoload.php';
php > $client = new Google_Client(['client_id' => 'web_client_id']);
php > print_r($client->verifyIdToken('id_token_string'));
-
成功验证客户端 ID 的此令牌是您应该用来代替给定用户的密码以进行安全身份验证的方法
-
使用用户 ID(ID 令牌"sub"字段)并将其存储为字符串来查找或创建您的用户条目,而不是电子邮件地址,这可能会更改
-
为用户颁发会话 Cookie 或令牌
有关更多详细信息,请参阅开发人员指南