Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Qt进行OAuth 2.0服务器到服务器身份验证时,令牌请求间歇性返回无效的\u授权_Qt_Openssl_Google Cloud Storage - Fatal编程技术网

使用Qt进行OAuth 2.0服务器到服务器身份验证时,令牌请求间歇性返回无效的\u授权

使用Qt进行OAuth 2.0服务器到服务器身份验证时,令牌请求间歇性返回无效的\u授权,qt,openssl,google-cloud-storage,Qt,Openssl,Google Cloud Storage,我讨厌间歇性的问题,所以希望有人能帮我找出导致我问题的原因。我一直在努力使用Openssl和Qt访问谷歌云存储。我取得了一些成功。问题是,我收到无效的_授权的频率高于收到有效令牌的频率。我的假设是,我提供给索赔集的时间数据有问题。在我获得访问令牌之前,可能需要几个请求 如何计算索赔集的iat和exp参数 QDateTime now = QDateTime::currentDateTime(); QDateTime utcNow = now.toUTC(); qint32 secs = utcNo

我讨厌间歇性的问题,所以希望有人能帮我找出导致我问题的原因。我一直在努力使用Openssl和Qt访问谷歌云存储。我取得了一些成功。问题是,我收到无效的_授权的频率高于收到有效令牌的频率。我的假设是,我提供给索赔集的时间数据有问题。在我获得访问令牌之前,可能需要几个请求

如何计算索赔集的iat和exp参数

QDateTime now = QDateTime::currentDateTime();
QDateTime utcNow = now.toUTC();
qint32 secs = utcNow.toTime_t();
其中,iat=秒,exp=秒+3600


谢谢。

谷歌的OAuth 2服务器限制您只请求一定数量的刷新令牌和访问令牌。如果你非常频繁地运行应用程序,那么你完全有可能受到速率限制。确保缓存刷新和访问令牌的时间尽可能长


另外,我认为toUTC()在您的示例中是多余的
toTime_t()
始终返回自UTC纪元以来的秒数。

确定获得它。间歇是由于在我将断言添加到postdata时没有对其进行编码。在进行此更改之前,当表示编码签名的QBytearray不包含任何“+”符号时,我将收到令牌


所以现在我一直收到令牌。

好的,我已经放弃了toUTC,显然我也得到了同样的行为。我不认为我所经历的与速率限制有任何关系,因为对云服务的第一次调用将返回一个无效的\u授权,如果我再发出几个请求,我可能会在六次尝试后得到一个令牌。