我想将Xero与C#Windows Service应用程序集成。我找不到简单的代码段将Xero与C#连接起来。在授权用户使用Xero时,我不希望任何用户交互。
我找到了下面的代码,但它将我重定向到Xero登录页面以进行身份验证,然后生成验证代码,我该如何避免并继续进行,因为在Windows Service中,我将没有任何GUI输入验证代码。
using System;
using System.Linq;
using System.Windows.Forms;
using Xero.Api.Core;
using Xero.Api.Example.Applications.Public;
using Xero.Api.Example.TokenStores;
using Xero.Api.Infrastructure.OAuth;
using Xero.Api.Serialization;
namespace XeroIntegrationTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ConnectXero();
}
public void ConnectXero()
{
try
{
// Public Application Sample
var user = new ApiUser { Name = Environment.MachineName };
string consumerKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
string consumerSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var public_app_api = new XeroCoreApi("https://api.xero.com/api.xro/2.0/", new PublicAuthenticator("https://api.xero.com/api.xro/2.0/", "https://api.xero.com/oauth/RequestToken", "oob",
new MemoryTokenStore()),
new Consumer(consumerKey, consumerSecret), user,
new DefaultMapper(), new DefaultMapper());
var public_contacts = public_app_api.Contacts.Find().ToList();
} catch (Exception ex)
{
MessageBox.Show(ex.Message + ex.StackTrace);
}
}
}
}
但生成oauth_problem = cermission_denied& oauth_problem_advice =%20consumer%20WAS%20DENDIED%20ACCESS%20to%20to%20 to to to this%20 resource
错误。
希望有人会帮助我。
您需要与" privateKeyauthenDicator"方法集成。
这样做:
1.使用以下链接
创建私有/公钥https://developer.xero.com/documentation/api-guides/create-publicprivate-key
2.创建ConsumerKey和ConsumerSecret
3.包含密钥文件到您的项目文件夹
4.使用下面的代码段以访问Xero
var private_app_api = new XeroCoreApi(_xeroSettings.Value.Url, new PrivateAuthenticator(privatekeyFilePath, privatekeypassword),
new Consumer(consumerKey,consumerSecret), null,
new DefaultMapper(), new DefaultMapper());
您需要使用" privateauthenticator"方法集成。您正在使用的方法是公共方法,并使用不同的身份验证过程,不适合Windows服务。
这样做:
- 访问Xero开发人员门户
- 转到"我的应用程序"部分
- 选择"添加应用程序"
- 从单选按钮选项中选择"私有"(这很重要)
- 生成私人/公钥组合(Google如何做到这一点)
- 按照读书文件中的代码示例使用privateauthenticator方法 建立连接