我正在ASP.Net MVC网站上进行PayPal Express Checkout。
该网站使用令牌身份验证,因此我尝试将令牌作为查询参数放在PayPal返回网址上。
我有一个处理程序拦截对我网站的所有请求,并从URL或请求标头中提取令牌。
从标题中正常工作但我在查询参数时遇到以下异常。我从声明主体获取令牌,不进行任何编码/解码。我试过this method但没有运气(发生同样的异常)。
System.ArgumentException was caught
HResult=-2147024809
Message=Jwt10204: 'System.IdentityModel.Tokens.JwtSecurityTokenHandler' cannot read this string: '{really long token}'.
The string needs to be in compact JSON format, which is of the form: '<Base64UrlEncodedHeader>.<Base64UrlEndcodedPayload>.<OPTIONAL, Base64UrlEncodedSignature>'.
Source=System.IdentityModel.Tokens.Jwt
StackTrace:
at System.IdentityModel.Tokens.JwtSecurityTokenHandler.ReadToken(String jwtEncodedString)
at {our namespace}.Providers.JwtTokenServiceProvider.GetToken(String value)
at {our namespace}.TokenAuthorisationController.Post(TokenRequest request)
答案 0 :(得分:0)
原来问题是PayPal在URL的末尾添加了另一个字符串(看起来像PayPal Express Checkout令牌),并使用逗号作为分隔符而不是“&amp;”符号
所以我通过删除逗号字符和逗号之后的额外字符来解决这个问题,以增加我的JWT令牌。