set*_*rgo 12 ruby base64 encoding json ruby-on-rails
我正在使用Facebook API和Ruby on Rails,我正在尝试解析返回的JSON.我遇到的问题是Facebook base64URL对其数据进行编码.Ruby没有内置的base64URL解码.
有关base64编码和base64URL编码之间的区别,请参阅维基百科.
如何使用Ruby/Rails解码?
编辑:
因为有些人阅读有困难 - base64 URL与base64不同
awa*_*age 12
德米特里的回答是正确的.它解释了在字符串解码之前必须出现的'='符号填充.我一直得到格式错误的JSON,最后发现它是由于填充.阅读更多关于Facebook signed_request的base64_url_decode的信息.
这是我使用的简化方法:
def base64_url_decode(str)
str += '=' * (4 - str.length.modulo(4))
Base64.decode64(str.tr('-_','+/'))
end
Run Code Online (Sandbox Code Playgroud)
谷歌搜索"base64 for URL ruby"并选择第一个结果引导我找到答案
Run Code Online (Sandbox Code Playgroud)cipher_token = encoded_token.tr('-_','+/').unpack('m')[0]除了可以包含任何字节值之外,cipher_token的详细信息并不重要.
那么你当然可以帮忙了base64UrlDecode( data ).
发生了什么事是,它需要的encoded_token,并取代所有-,并_用文字+和/分别.然后,它使用base64编码数据解码unpack('m')并返回返回数组中的第一个元素:解码数据.