Google云端硬盘OAuth2:包含多个参数的“州”

时间:2017-11-17 10:32:41

标签: python-2.7 oauth-2.0 google-drive-api google-oauth

GDrive OAuth允许将状态参数从请求传递到响应回调。当我发送一个包含单个令牌的字符串时,它按预期工作,但如果我发送一个json,那么我似乎无法从回调函数中的state参数读回值。

我尝试在回调中使用base64.encodestring(),base64.urlsafe_b64encode()和这些函数的解码版本,但是在解码时出现“不正确的填充”错误。

为了解决这个问题,我尝试了以下在StackOverflow上找到的代码片段:

`stateStr += "=" * ((4 - len(stateStr) % 4) % 4)`
`stateList = base64.urlsafe_b64decode(stateStr)`

但我仍然收到“填充不正确”错误。

任何帮助将不胜感激,

由于

修改 这个问题的解决方法是让我使用'|'分隔字符串焦炭。这样我仍然传递一个字符串,它没有任何填充错误。 的 修改

1 个答案:

答案 0 :(得分:0)

基于此SO post,有多种方法可以破坏base64数据。有人指出here不需要填充字符,因为丢失的字节数可以从Base64数字的数量计算出来。

  

如果出现填充错误,则可能表示您的字符串已损坏; base64编码的字符串应具有四个长度的倍数。您可以尝试自己添加填充字符(=)以使字符串为四的倍数,但除非出现错误,否则它应该已经存在。