有没有办法在C#桌面应用程序中使用oauth2登录Xero api?

时间:2020-09-06 23:36:18

标签: c# oauth-2.0 xero-api pkce

有几个使用oauth2登录Xero的.Net示例代码,但是它们都可与浏览器一起使用(C#的示例代码大部分用于ASP.NET MVC)。

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

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

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

2 个答案:

答案 0 :(得分:4)

Xero api登录仅被迁移为使用OAuth2.0,它应至少与浏览器交互一次。 一旦使用offline_access作用域获取了refresh_token,就将使用此令牌来获取访问令牌。 不幸的是,他们不支持自定义网址方案。 希望对您有帮助。

答案 1 :(得分:0)

我遇到了同样的问题,并且没有如何执行此操作的示例。

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

我创建了一个worked example on github来演示如何执行此操作。

自从我生产此Xero以来,已经向我发送了指向新desktop based program的链接,该链接替换了他们的XOAuth console program来生成刷新令牌。

.Net 5现在可用,您可以在需要登录Xero时查看将Edge嵌入到应用程序中

相关问题