我想将xero与c#windows服务应用程序集成。 我没有找到一个简单的代码片段来连接xero和c#。在使用xero授权用户时,我不希望任何用户交互。
我找到了下面的代码,但它将我重定向到xero登录页面进行身份验证,然后生成验证码,如何避免这种情况并继续执行,因为在Windows服务中我不会有任何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 = PERMISSION_DENIED&安培; oauth_problem_advice =的%20consumer%20was%20denied%20access%20to%20this%20resource
错误。
希望有人能帮助我。
答案 0 :(得分:1)
您需要与“privateKeyAuthendicator”方法集成。
要做到这一点:
1.使用以下链接创建私人/公钥
2.Create ConsumerKey and 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());
答案 1 :(得分:0)
您需要使用" PrivateAuthenticator"进行整合。方法。您使用的方法是公共方法,并使用不适合Windows服务的不同身份验证过程。
要做到这一点: