1

我正在尝试使用 authy 实现 2FA,并使用authy php库和 authy API 密钥将用户添加到 authy,以便用户可以扫描 QR 码并在手机中获取我的应用程序身份验证。

我做了那个库 github 页面中提到的文档。用户数据已成功保存,但我得到一些随机数字密钥(由 authy 为用户生成)秘密存储在数据库中,如果我在应用程序中输入该密钥,则显示密钥无效错误,请查看下面的屏幕截图

我们需要输入类似这样的秘密(包括图片) 我们需要输入类似这样的秘密,但我得到数字秘密,如果我手动输入该应用程序显示错误,如下图所示

Authy 应用程序错误

文档如下

require_once dirname(__DIR__) . '/extra/Authy/vendor/autoload.php';
$authy_api = new Authy\AuthyApi('MY_API_KEY');
$user = $authy_api->registerUser('email@gmail.com', '9999999999', 91); // (email, phone number, country code)
if($user->ok()){
echo json_encode($user->id());
}else{
foreach($user->errors() as $field => $message) {
printf("$field = $message");
}
}

另一个问题是如何生成 Authy 可以理解的二维码?我已经搜索了一些,但没有得到任何解决方案。请帮我。

4

1 回答 1

1

Twilio/Authy 开发人员布道者在这里。

我必须道歉,我们这里的文档有点落后。我会尽力提供帮助。

首先,我建议您查看有关Twilio 和 Authy 的两因素身份验证的文档。

其次,让我解释一下 Authy 的过程,看看你已经走了多远。

您已正确设置 API 和凭据,然后您已使用对$authy_api->registerUser. 您从该响应中获得的用户 ID 不应与任何人共享。它是您在 Authy 数据库中对您的用户的引用。您应该针对正在注册的用户存储该 ID,并在您需要发送代码或验证代码时使用该 ID。

您也不需要使用二维码与用户分享任何内容。要启动两因素身份验证过程,您现在需要调用:

$authy_api->requestSMS($userID);

使用您从 API 返回的 ID 与$usedID此代码中的一样。

方法调用表明它将发送一条短信,但这只是一些遗留问题。

  • 如果您的用户已经安装了 Authy 移动应用程序并登录并使用他们的电话号码进行了验证,那么 Authy 将向该应用程序发送推送通知,其中包含他们需要发送给您的代码。您的应用程序将出现在 Authy 应用程序中,用户无需执行任何操作(尤其是扫描二维码)。
  • 如果用户没有安装 Authy 应用程序,那么 Authy 将向他们发送带有代码的 SMS 消息。如果您想避免发送 SMS 消息,则需要鼓励您的用户安装 Authy 应用程序。

最后,一旦用户在您的网站上输入代码,您应该调用以验证令牌

$authy_api->verifyToken($userID, $token);

在这种情况下,$userID是您最初从registerUser通话中获得的 ID,并且是您保存给用户的 ID。这$token是他们从应用程序或短信输入的代码。

请让我知道这是否有帮助或您有任何其他问题。

于 2017-11-29T04:01:20.260 回答