问题描述
到目前为止,我已经创建了用户池,应用程序客户端并标记了“生成客户端密码”框。 我能够注册,登录,注销。 但是我无法使用REFRESH_TOKEN_AUTH流刷新令牌。
private function refreshConf($refreshToken,$hash)
{
return [
'AuthFlow' => 'REFRESH_TOKEN_AUTH','ClientId' => $this->client_id,'UserPoolId' => $this->userpool_id,'AuthParameters' => [
'REFRESH_TOKEN' => $refreshToken,'SECRET_HASH' => $hash
]
];
}
public function refreshToken(string $refreshToken,string $hash)
{
try {
$conf = $this->refreshConf($refreshToken,$hash);
$result = $this->client->InitiateAuth($conf);
$result = $result->toArray();
logger($result);
if (isset($result['AuthenticationResult'])) {
return [
'error' => false,'message' => 'SUCCESS','data' => $result
];
}
} catch (\Exception $e) {
logger(get_class($e));
return [
'error' => true,'message' => $e->getAwsErrorMessage()
];
}
}
public function cognitoSecretHash($username)
{
$hash = hash_hmac('sha256',$username . $this->client_id,$this->client_secret,true);
return base64_encode($hash);
}
秘密哈希在注册过程中存储在用户模型中,因此当我要刷新令牌时可以发送它。但是每次Aws\CognitoIdentityProvider\Exception\CognitoIdentityProviderException
被抛出。然后我得到响应Unable to verify secret hash for client d***************9
。
到目前为止,我已经花了数小时尝试Google的解决方案。 javascript SDK似乎有问题,但是没有提到PHP。我阅读了AWS文档,找不到我做错了什么。我将不胜感激任何帮助。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)