【发布时间】:2020-08-24 23:59:14
【问题描述】:
我正在实施一个内部程序来从我的数据库中生成发票。在使用.NET Core。我安装了 Xero.Api.SDK.Core v. 1.1.4
我发现 Xero 文档很难理解,而且有点过时。我查看了Github 存储库,它们仅引用OAuth 2.0。就我而言,我不想要任何用户交互,因为我想要一个后台进程。
我创建了一个作为开发者的帐户和一个用于测试的演示公司。
我用谷歌搜索了一下,我在一个网站上找到了一个如何连接到 api 的示例(我在 Xero 文档中找不到任何详细信息)。
X509Certificate2 cert = new X509Certificate2(@"public_privatekey.pfx", "password");
var api = new Xero.Api.Example.Applications.Private.PrivateAuthenticator(cert);
var private_app_api = new XeroCoreApi("https://api.xero.com",
new PrivateAuthenticator(cert),
new Consumer("ClientId", "ClientSecret"),
null, null);
现在,我想,我应该使用 api。我试图阅读联系人列表:
var contacts = private_app_api.Contacts;
var list = contacts.FindAsync().Result;
结果如下错误:
System.AggregateException: '发生一个或多个错误。 (oauth_problem=consumer_key_unknown&oauth_problem_advice=Consumer%20key%20was%20not%20recognised)'
内部异常 UnauthorizedException: oauth_problem=consumer_key_unknown&oauth_problem_advice=Consumer%20key%20was%20not%20recognised
然后,我从 Github 下载了存储库。我复制并粘贴 ClientId 和 ClientSecret 并运行测试。没有一项测试通过!
我的目标是创建联系人或在列表中查找联系人,创建发票并将发票以 PDF 格式保存在我的存储中。
我该怎么做?有什么例子吗?
PS:在developer forum 中,登录不起作用,并且 Postman 集合是旧的,它也不起作用。
更新
我很绝望。我尝试使用XOauth 以另一种方式连接到api。最糟糕的。我按照 Xero 在 Github 上的说明创建了连接。
当我尝试连接时
xoauth 连接
在我的浏览器中打开了一个新标签,然后...
邮递员更新
我按照Postman 的步骤操作。我在我的邮递员中打开了收藏。在环境中,我从 Xero Developer 站点更新了 client_id 和 client_secret,然后进行了以下配置:
re_directURI:https://developer.xero.com
范围:offline_access 个人资料电子邮件accounting.transactions
我打开了Get started api,Generate token,我给出了同样的结果。
【问题讨论】:
-
看 youtube 频道。有一个视频展示了如何进行后台进程所需的机器对机器连接。我正在做一个 Windows 服务,这也是背景。 youtube.com/channel/UC7DA_vntKKChsenzpL7QWPg/videos
-
您的代码正在使用旧式 OAuth 1 调用,虽然您仍然可以使用特殊链接以这种方式创建应用程序,但您只能在 6 月之前这样做。所以现在用它来创造新东西没有多大意义。
-
这在文档和 Github 存储库中。我发现一切都非常混乱和混乱。我试着看 Youtube 频道,更糟糕的是:大部分视频都是旧的。只有一个视频youtube.com/watch?v=Zcf_64yreVI 很混乱,我不明白该怎么做。
-
哦,这就是我想的那个,它为我清除了一些东西。我现在不使用 API,我首先使用 XOAuth 获取令牌,然后在需要时使用 HTTP POST 刷新它,并根据需要使用 HTTP 获取或发布以与 Xero 交互。示例代码的问题是我使用的是 VB,而不是 c#,所以我要么尝试从不熟悉的语言翻译,要么学习一门。
-
使用
XOAuth,您创建了第一个令牌,并使用这个令牌调用另一个api。它在工作吗?如果令牌过期了,你在做什么?
标签: c# azure-functions xero-api