【问题标题】:How to generate an access token in Xero with OAuth 2.0?如何使用 OAuth 2.0 在 Xero 中生成访问令牌?
【发布时间】:2019-08-19 06:37:34
【问题描述】:

我正在尝试通过 Postman 中的 OAuth 2.0 使用新的 Xero 授权生成访问和刷新令牌,但响应始终是“错误”:“无效客户端”。

我一直按照https://developer.xero.com/documentation/oauth2/auth-flow 上的说明进行操作, 创建生成访问令牌所需的验证码,并使用与创建验证码相同的 client_id。

代码请求:

https://login.xero.com/identity/connect/authorize?response_type=code&client_id=81158066DB8B43A9AEF0DDDCCA627E80&redirect_uri=https://google.com&scope=offline_accessopenid 个人资料电子邮件accounting.transactions&state=123

响应代码:

https://www.google.com/?code=dcc89ab12dcbbbf8490cf5d608c9113fd2a08b89df21cd3083981d9626827130&scope=openid%20profile%20email%20accounting.transactions&state=123&session_state=GntauNK0X33LYCcKjEC4r-lKK9zSuJAPLsYQ14Tc0E8.9c96656e0bb655da4343a4c8e5fa12cb

访问令牌请求:

发布https://identity.xero.com/connect/token?grant_type=authorization_code&code=dcc89ab12dcbbbf8490cf5d608c9113fd2a08b89df21cd3083981d9626827130&redirect_uri=https://google.com

标题:

授权:"基本" + base64encode(81158066DB8B43A9AEF0DDDCCA627E80 + ":" + mRbxQuOQ01S8twNg1wxdkwIzrtWN8HGUpYu9wy5kYgFJf2t-)

内容类型:application/x-www-form-urlencoded


当我在 Postman 中使用 Basic Auth 时,响应是“error”:“unsupported_grant_type”。

发布https://identity.xero.com/connect/token?grant_type=authorization_code&code=dcc89ab12dcbbbf8490cf5d608c9113fd2a08b89df21cd3083981d9626827130&redirect_uri=https://google.com

标题:

授权:基本 ODExNTgwNjZEQjhCNDNBOUFFRjBERERDQ0E2MjdFODA6ZE5YY0V2UldqX2YwdVY4X3cyLS1wOTFvZHpOM2doaWN3WnJVM05jUzJjR2VpQVBp

内容类型:application/x-www-form-urlencoded

知道我在做什么错吗?

【问题讨论】:

  • 你有没有把grant_type、code和redirect_uri的值放到access token请求的body里?
  • 你能紧急删除你的秘密吗?从这篇文章中删除它并在 developer.xero.com/myapps 中的应用上重新生成它
  • 嗨@Martin,我也尝试生成访问令牌,刷新令牌。总是得到像“invalid_client”这样的错误。我也尝试在下面的body和Adam方式中传递grant_type、code和redirect_uri值。

标签: xero-api


【解决方案1】:

如果您使用 Postman 手动逐步完成身份验证流程,请按照以下方式请求访问令牌:

Headers 选项卡上添加 Authorization 标头以及您的编码客户端 ID 和机密(如您所述)并将内容类型设置为 application/x-www-form-urlencoded

然后在 Body 选项卡上选择 x-www-form-urlencoded 单选按钮,然后将grant_type 设置为authorization_code,设置您的redirect_url 和您的代码

综上所述,只有在对身份验证流程进行故障排除时才应该这样做。如果您只想进行 API 调用,您应该只使用授权选项卡上的 OAuth2 助手https://learning.getpostman.com/docs/postman/sending_api_requests/authorization/#oauth-20

【讨论】:

    【解决方案2】:

    您能否检查您的 redirect_uri 是否与针对您的应用保存的重定向 URI 匹配、您的客户端 ID 是否正确以及范围是否有效?

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 2023-01-23
      相关资源
      最近更新 更多