3

有几个使用 oauth2 来登录 Xero 的 .Net 示例代码,但它们都适用于浏览器(大多数 C# 示例代码用于 ASP.NET MVC)。

我打算使用 Xero Api 开发桌面应用程序,但 Xero 官方教程说移动或桌面应用程序应该使用 PKCE 流而不是使用 ClientID/Secret 方案。

在此 PKCE 流程中,用户应与浏览器交互以获取授权码。

我想知道是否有任何方式无需用户交互即可登录。

4

2 回答 2

4

Xero api 登录刚刚迁移到使用 OAuth2.0,它应该至少与浏览器交互一次。使用 offline_access 范围获得 refresh_token 后,您将使用此令牌来获取访问令牌。不幸的是,他们不支持自定义 url 方案。希望这对您有所帮助。

于 2020-09-07T03:54:46.157 回答
1

我有同样的问题,并且没有如何做到这一点的例子。

如前所述,您需要创建一个刷新令牌(这确实意味着您必须在某个时候打开浏览器),但之后您可以继续刷新令牌以获取新的访问令牌。刷新令牌只能使用一次,因此您必须在每次使用后存储新的刷新令牌。您必须确保一次只允许一个程序/线程刷新令牌。如果未刷新,刷新令牌将在 60 天后过期。

在 github 上创建了一个工作示例来展示如何做到这一点。

自从我制作了这个 Xero 后,我向我发送了一个新的基于桌面程序的链接,该程序替换了他们的XOAuth 控制台程序以生成刷新令牌。

现在 .Net 5 可用,您可以考虑将 Edge 嵌入到应用程序中,以便在您必须登录 Xero 时使用

于 2020-11-15T11:19:35.263 回答