问题描述
我已经在使用 Google Api Directory 来更改用户的密码,但一位用户在他的密码中输入了“ñ”。 当他尝试登录时,他收到一条错误消息,指出密码不正确。 字母“ñ”是一个扩展的 ASCII 字符。
API 目录文档说:
密码可以包含任意 ASCII 字符组合
我的问题是:密码可以包含扩展的 ASCII 字符还是只能包含基本字符?
要对密码进行编码,我使用此代码(密码具有 utf-8 编码):
$user_obj = new Google_Service_Directory_User();
$service = new Google_Service_Directory($client);
//Asci conversion
$dades["password"] = mb_convert_encoding($dades["password"],"ASCII",mb_detect_encoding($dades["password"]));
$user_obj->setHashFunction("SHA-1"); //SHA1 hash
$user_obj->setPassword(hash("sha1",$dades["password"]));
//Execute
try{
$service->users->update($dades["emailg"],$user_obj);
} catch (Exception $e) {
$errors = $e->getMessage();
}
解决方法
答案:
不,不允许使用扩展字符集。
更多信息:
来自 creating passwords 上的 Google 帐户帮助文章(强调我自己的):
满足密码要求
使用 12 个或更多字符创建密码。它可以是字母、数字和符号的任意组合(仅限 ASCII 标准字符)。不支持重音和重音字符。
我知道这通常是个坏消息,但我希望这对您有所帮助!