有几个使用oauth2登录Xero的.Net示例代码,但是它们都可与浏览器一起使用(C#的示例代码大部分用于ASP.NET MVC)。
我打算使用Xero Api开发一个桌面应用程序,但是Xero官方教程说,移动或桌面应用程序应该使用PKCE流而不是使用ClientID / Secret方案。
在此PKCE流程中,用户应与浏览器进行交互以获得授权代码。
我想知道是否有任何无需用户交互即可登录的方法。
答案 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嵌入到应用程序中