首先,所有的按键都与沙箱环境贝宝REST API - 的accessToken从RefreshToken返回“INVALID_REQUEST”
我一直在争取与贝宝REST API的最后几天,我'试图让我的应用程序的用户登录,并允许我访问他们的帐户来执行服务,如退款,支付匹配等
到目前为止,我有一个带有浏览器的Winforms应用程序,我重定向我的用户到:
他们登录...内嵌浏览器扫描地址并收集返回的“代码”。从这里开始,我使用grant_type为'authorization_code'的方式POST到Paypal(/ v1/identity/openidconnect/tokenservice)并收集AccessToken和RefreshToken(我想重用)。
这一切都完美的工作,直到我想使用先前的RefreshToken请求另一个AccessToken。
这是返回的JSON对象:
{{
"token_type": "Bearer",
"expires_in": "28800",
"refresh_token": "o_u5L17nQ4takc5ek_6QGMWl2lZA0jQThpMhURowJKNm6lBPFdkaLUzy0VFwXRg9xRA-ApjDkAIZm6hys_Yg1sLyjceaHIlGIKX_grDBeT5fOeEsPFKg6R9lHp8",
"id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJBWGc0ZXlUeUtEQWhZb29CMnJIZ2J0MUZOSElyOU1oNDVFVzBIMUZQeG5PS2t0NGo4TWR5aVRqSnAxRUxSaGYxNVhDN2hBZTlRWXJER19FcSIsImF1dGhfdGltZSI6MTQ2NTgyOTc4MCwiaXNzIjoiaHR0cHM6Ly93d3cucGF5cGFsLmNvbSIsInNlc3Npb25JbmRleCI6IjIyYjJmNzRkMDA2YzExY2I4N2U3ZGZkY2Q3YjJjNWU0M2RhODljNDYiLCJpYXQiOjE0NjU4Mjk3ODUsImV4cCI6Mjg4MDAsInVzZXJfaWQiOiJodHRwczovL3d3dy5wYXlwYWwuY29tL3dlYmFwcHMvYXV0aC9pZGVudGl0eS91c2VyL0F6V0VmSUtFdE1ldU1SN3laYS1LbkhOSTBPU2x1S2E1N1hVY082VE5sQ1EifQ==.q-JCp-d93CCaS0TgCdMqi9yVmHMzyAID7SbI7O81YwY",
"access_token": "A015mqkkXEVVq0Va0BexS.hhQE0Dlzm36eKNS8-4CVLiIZs"
}}
ChildrenTokens: Count = 5
Count: 5
First: {"token_type": "Bearer"}
HasValues: True
Last: {"access_token": "A015mqkkXEVVq0Va0BexS.hhQE0Dlzm36eKNS8-4CVLiIZs"}
[Next]: Nothing
Parent: Nothing
Path: ""
Previous: Nothing
Root: {{
"token_type": "Bearer",
"expires_in": "28800",
"refresh_token": "o_u5L17nQ4takc5ek_6QGMWl2lZA0jQThpMhURowJKNm6lBPFdkaLUzy0VFwXRg9xRA-ApjDkAIZm6hys_Yg1sLyjceaHIlGIKX_grDBeT5fOeEsPFKg6R9lHp8",
"id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJBWGc0ZXlUeUtEQWhZb29CMnJIZ2J0MUZOSElyOU1oNDVFVzBIMUZQeG5PS2t0NGo4TWR5aVRqSnAxRUxSaGYxNVhDN2hBZTlRWXJER19FcSIsImF1dGhfdGltZSI6MTQ2NTgyOTc4MCwiaXNzIjoiaHR0cHM6Ly93d3cucGF5cGFsLmNvbSIsInNlc3Npb25JbmRleCI6IjIyYjJmNzRkMDA2YzExY2I4N2U3ZGZkY2Q3YjJjNWU0M2RhODljNDYiLCJpYXQiOjE0NjU4Mjk3ODUsImV4cCI6Mjg4MDAsInVzZXJfaWQiOiJodHRwczovL3d3dy5wYXlwYWwuY29tL3dlYmFwcHMvYXV0aC9pZGVudGl0eS91c2VyL0F6V0VmSUtFdE1ldU1SN3laYS1LbkhOSTBPU2x1S2E1N1hVY082VE5sQ1EifQ==.q-JCp-d93CCaS0TgCdMqi9yVmHMzyAID7SbI7O81YwY",
"access_token": "A015mqkkXEVVq0Va0BexS.hhQE0Dlzm36eKNS8-4CVLiIZs"
}}
[Type]: Object {1}
Results View: Expanding the Results View will enumerate the IEnumerable
Dynamic View: Expanding the Dynamic View will get the dynamic members for the object
就像早期的请求 '/ V1 /身份证/ openidconnect/tokenservice'(这工作!)我再次发布它,这一次的grant_type 'refresh_token'。这次回应是一个例外:
"Unable to refresh access token - invalid_request - https://developer.paypal.com/docs/api/#errors"}
Data: {System.Collections.ListDictionaryInternal}
HResult: -2146233079
HelpLink: Nothing
InnerException: {"The remote server returned an error: (400) Bad Request."}
Message: "Unable to refresh access token - invalid_request - https://developer.paypal.com/docs/api/#errors"
Response: Nothing
Source: "PPTest_RESTSDK"
StackTrace: " at PPTest_RESTSDK.Wrapper.WebRequest.Post(Dictionary`2 Contents, String RelativeURL, String AccessToken) in C:\Development\DELME\_PPTest_RESTSDK\PPTest_RESTSDK\Wrapper.vb:line 432" & vbCrLf & " at PPTest_RESTSDK.Wrapper.RegisterByRefreshToken() in C:\Development\DELME\_PPTest_RESTSDK\PPTest_RESTSDK\Wrapper.vb:line 294"
Status: UnknownError {16}
TargetSite: {System.String Post(System.Collections.Generic.Dictionary`2[System.String,System.String], System.String, System.String)}
要删除我的代码有错误的假设,我已经使用POSTMAN(Chrome插件)重新创建了这个。运行此操作也将重新创建我所看到的完全相同的错误 - 请参阅下文。
的授权是我的Base64编码的版本 “客户端:秘密”,这等于:
基本QVhnNGV5VHlLREFoWW9vQjJySGdidDFGTkhJcjlNaDQ1RVcwSDFGUHhuT0trdDRqOE1keWlUakpwMUVMUmhmMTVYQzdoQWU5UVlyREdfRXE6RUlYdklvQ3A1bVNRNDZ4RmhtS2VxbGR4anBzMGNIUkxBdTRFZnJnTXZBN3VRMXBaVFN0dWwyTlE1OVNIcjVydEYyeHZYVUNOOWxCT1FEd1g =
客户: AXg4eyTyKDAhYooB2rHgbt1FNHIr9Mh45EW0H1FPxnOKkt4j8MdyiTjJp1ELRhf15XC7hAe9QYrDG_EqSecret:EIXvIoCp5mSQ46xFhmKeqldxjps0cHRLAu4EfrgMvA7uQ1pZTStul2NQ59SHr5rtF2xvXUCN9lBOQDwX
,这是同样的结果在邮差:
有人能告诉我这到底我做错了吗?我非常感谢它!
您的文章看起来很好,但在邮递员刷新令牌是从一个在你的第一张截图不同。 – iandayman
是的你是非常正确的 - 错误是在这篇文章中,但在代码中,我使用了同样的刷新标记。为了清楚起见,我只是重新注册一个新的授权码和生成(81hrG2lAY2916ocCs68kt8015dlWlEcKr2zjsGZC_V1zQ-s9POtYA4o4FSJVB3t35Euaxh9cnWVPm71TjYrUQhElJWopZSyAzgnpfrYMAD06hmDYcDAegk17a4k)的新refresh_token,它仍然无法正常工作。 –
更新:编辑帖子以反映这一点 –